微信小程序分享接口,微信小程序分享接口用法,以下是小編整理的微信小程序分享接口用法代碼,以下內(nèi)容供您參考和學(xué)習(xí)。
/**
* 調(diào)用微信公眾平臺(tái)接口
* [url=home.php?mod=space&uid=49329]@author[/url] cx
* [url=home.php?mod=space&uid=64203]@see[/url]
*/
var wxopen = (function($,wxopen){
wxopen.service = "../../activity/waprequest.htm";//服務(wù)地址
wxopen.debug = true;//是否開啟調(diào)試模式
wxopen.timestamp = "";//生成簽名的時(shí)間戳
wxopen.nonceStr = "";//生成簽名的隨機(jī)串
wxopen.signature = "";//簽名
wxopen.shareData = {};//分享內(nèi)容
//必填,需要使用的JS接口列表,所有JS接口列表見附錄2
wxopen.jsApiList =
'stopVoice',
'uploadVoice',
'downloadVoice',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'showOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openProductSpecificView',
'addCard',
'chooseCard',
'openCard'
];
/*微信API*/
wxopen.API={
oauth2:"https://open.weixin.qq.com/connect/oauth2/authorize"
};
/**
* 初始微信JS-SDK
*/
wxopen.initJSSDK=function(data,jsonp){
wxopen.shareData = data||wxopen.shareData;//分享信息
var data = {};
data["interfaceCode"] = "weiXinOpen.config";
data["appid"] = wxopen.shareData.appid;
data["url"] = window.location.href;
wxopen.callServ(wxopen.service,data,callServiceBack,jsonp);
//回調(diào)函數(shù)
function callServiceBack(data){
wxopen.timestamp = data.body.timestamp;
wxopen.nonceStr = data.body.nonceStr;
wxopen.signature = data.body.signature;
wxopen.config();
}
};
/**
* OAuth2.0鑒權(quán)、網(wǎng)頁授權(quán)登陸
* 微信登陸則跳轉(zhuǎn)至微信授權(quán)登陸頁面,否則不做任何處理
*/
wxopen.initOAuth2=function(data){
if(wxopen.isWeiXin){
window.location=wxopen.authorize(data);
}
};
/**
* 通過config接口注入權(quán)限驗(yàn)證配置
*/
wxopen.config=function(){
/*
* 通過config接口注入權(quán)限驗(yàn)證配置
*/
wx.config({
debug: wxopen.debug, //開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。
appId:wxopen.shareData.appid, //必填,公眾號(hào)的唯一標(biāo)識(shí)
timestamp:wxopen.timestamp, //必填,生成簽名的時(shí)間戳
nonceStr:wxopen.nonceStr, //必填,生成簽名的隨機(jī)串
signature:wxopen.signature,//必填,簽名,見附錄1
jsApiList:wxopen.jsApiList//必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});
/*
* config信息驗(yàn)證后會(huì)執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,
* config是一個(gè)客戶端的異步操作,所以如果需要在頁面加載時(shí)就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行。
* 對(duì)于用戶觸發(fā)時(shí)才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
*/
wx.ready(function () {
wxopen.onMenuShareAppMessage();//獲取“分享給朋友”按鈕點(diǎn)擊狀態(tài)及自定義分享內(nèi)容接口
wxopen.onMenuShareTimeline()//獲取“分享到朋友圈”按鈕點(diǎn)擊狀態(tài)及自定義分享內(nèi)容接口
});
/*
* config信息驗(yàn)證失敗會(huì)執(zhí)行error函數(shù),如簽名過期導(dǎo)致驗(yàn)證失敗,具體錯(cuò)誤信息可以打開config的debug模式查看,
* 也可以在返回的res參數(shù)中查看,對(duì)于SPA可以在這里更新簽名。
*/
wx.error(function (res) {
if(wxopen.debug){
alert(res.errMsg);
}
});
};
/**
* 獲取“分享給朋友”按鈕點(diǎn)擊狀態(tài)及自定義分享內(nèi)容接口
*/
wxopen.onMenuShareAppMessage=function(){
wx.onMenuShareAppMessage({
title: wxopen.shareData.title,
desc: wxopen.shareData.desc,
link: wxopen.shareData.link,
imgUrl: wxopen.shareData.imgUrl,
trigger: function (res) {
wxopen.doCallback('shareAppMessage',['trigger',res]);
},
success: function (res) {
wxopen.doCallback('shareAppMessage',['success',res]);
},
cancel: function (res) {
wxopen.doCallback('shareAppMessage',['cancel',res]);
},
fail: function (res) {
wxopen.doCallback('shareAppMessage',['fail',res]);
}
});
};
/**
* 獲取“分享到朋友圈”按鈕點(diǎn)擊狀態(tài)及自定義分享內(nèi)容接口
*/
wxopen.onMenuShareTimeline=function(){
wx.onMenuShareTimeline({
title: wxopen.shareData.title,
link: wxopen.shareData.link,
imgUrl: wxopen.shareData.imgUrl,
trigger: function (res) {
wxopen.doCallback('shareTimeline',['trigger',res]);
},
success: function (res) {
wxopen.doCallback('shareTimeline',['success',res]);
},
cancel: function (res) {
wxopen.doCallback('shareTimeline',['cancel',res]);
},
fail: function (res) {
wxopen.doCallback('shareTimeline',['fail',res]);
}
});
};
/**
* 用戶同意授權(quán),獲取code、
* 微信環(huán)境則返回獲取code鏈接,否則返回默認(rèn)鏈接
*/
wxopen.authorize=function(data){
var appid = data.appid||"";//公眾號(hào)的唯一標(biāo)識(shí)
var redirectUri = data.redirectUri||"";//授權(quán)后重定向的回調(diào)鏈接地址,請(qǐng)使用urlencode對(duì)鏈接進(jìn)行處理
/*
* 應(yīng)用授權(quán)作用域,snsapi_base (不彈出授權(quán)頁面,直接跳轉(zhuǎn),只能獲取用戶openid),snsapi_userinfo
* (彈出授權(quán)頁面,可通過openid拿到昵稱、性別、所在地。并且,即使在未關(guān)注的情況下,只要用戶授權(quán),也能獲取其信息)
*/
var scope = data.scope||"snsapi_base ";
var state = data.state||"";//重定向后會(huì)帶上state參數(shù),開發(fā)者可以填寫a-zA-Z0-9的參數(shù)值,最多128字節(jié)
var defaultUri = data.defaultUri||"";//非微信瀏覽器打開默認(rèn)Uri,若為空則不進(jìn)行處理
var url = "";
if(wxopen.isWeiXin){
var strBuf = new StringBuffer();
strBuf.append(wxopen.API.oauth2)
.append("?").append("appid=").append(appid)
.append("&").append("redirect_uri=").append(encodeURIComponent(redirectUri))
.append("&").append("response_type=").append("code")
.append("&").append("scope=").append(scope)
.append("&").append("state=").append(state)
.append("#wechat_redirect");
url = strBuf.toString();
}else{
url = defaultUri;
}
return url;
};
/**
* 拉取用戶信息 snsapiBase
*/
wxopen.snsapiBase=function(appid,code,jsonp,fn){
var data = {};
data["interfaceCode"] = "weiXinOpen.snsapiBase";
data["appid"] = appid;
data["code"] = code;
wxopen.callServ(wxopen.service,data,callServiceBack,jsonp);
//回調(diào)函數(shù)
function callServiceBack(data){
var data = data.body||{};
wxopen.doCallback(fn,[data]);
}
};
/**
* 拉取用戶信息 snsapiUserinfo
*/
wxopen.snsapiUserinfo =function(appid,code,jsonp,fn){
var data = {};
data["interfaceCode"] = "weiXinOpen.snsapiUserinfo";
data["appid"] = appid;
data["code"] = code;
wxopen.callServ(wxopen.service,data,callServiceBack,jsonp);
//回調(diào)函數(shù)
function callServiceBack(data){
var data = data.body||{};
wxopen.doCallback(fn,[data]);
}
};
/**
* 調(diào)用服務(wù)
*/
wxopen.callServ=function(service,param,callback,jsonp){
jsonp = jsonp||false;
if(jsonp){//跨域調(diào)用
wxopen.callJSONPService(service,param,callback);
}else{//非跨域調(diào)用
wxopen.callService(service,param,callback);
}
};
/**
* 跨域調(diào)用后臺(tái)服務(wù)
*/
wxopen.callJSONPService=function(service,param,callback){
var callback=callback||function(){};
var param = param||{};
param["jsonp"] = true;
$.ajax({
url : service,
data:param,
dataType:"jsonp",
type : "get",
jsonp: "callbackName",//傳遞給請(qǐng)求處理程序或頁面的,用以獲得jsonp回調(diào)函數(shù)名的參數(shù)名(默認(rèn)為:callback)
jsonpCallback:"success",//自定義的jsonp回調(diào)函數(shù)名稱,默認(rèn)為jQuery自動(dòng)生成的隨機(jī)函數(shù)名
success : function(data){
data = {head:{respCode:data.code,respDesc:data.message},body:data.data};
callback.apply(this,[data]);
},
error:function(e,t){
data = {head:{respCode:-1,respDesc:e.message},body:{}};
callback.apply(this,[data]);
}
});
};
/**
* 調(diào)用后臺(tái)服務(wù)
*/
wxopen.callService=function(service,param,callback){
var callback=callback||function(){};
$.ajax( {
url : service,
data:param,
dataType:"json",
type : "post",
success : function(data){
data = {head:{respCode:data.code,respDesc:data.message},body:data.data};
callback.apply(this,[data]);
},
error:function(e,t){
data = {head:{respCode:-1,respDesc:e.message},body:{}};
callback.apply(this,[data]);
}
});
};
/**
* 回調(diào)函數(shù)
*/
wxopen.doCallback=function(fn,args){
try {
if(typeof fn == 'undefined' || fn == '' || fn == null){
return;
}
if(typeof fn == 'function'){//方法存在
fn.apply(this, args);
}
if(typeof fn == 'string'){
fn = eval(fn);
fn.apply(this, args);
}
} catch (e) {
if(wxopen.debug){
alert(e);
}
/**
* 空校驗(yàn)
*/
wxopen.isEmpty=function(str){
return (str == null || str == "" || str == "undefined");
};
/**
* StringBuffer
*/
function StringBuffer() {
this._strings = new Array;
}
StringBuffer.prototype.append = function(str){
this._strings.push(str);
return this;
};
StringBuffer.prototype.toString = function(){
return this._strings.join("");
};
return wxopen;
})($,{});