1.微信認證過的公共號 必須是認證過的,未認證或者認證過時都不行
2.一個域名 須要備案過的
3.一臺服務器 前端頁面須要的appId、signature是須要後臺傳遞過來的。官方默認後臺程序有PHP、Python、Node、Java版本
ios
先登陸微信公衆平臺進入「公衆號設置」的「功能設置」裏填寫「JS接口安全域名」(發佈用的那個域名)api
這部分工做屬於後臺開發,主要功能是利用公衆號APPID、APPSECRET從微信服務器獲取對應的access_token。安全
在須要調用JS接口的頁面引入以下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.jsbash
/**
* 微信受權js-sdk
* @param {*} param0
*/
export const wxConfig = ($appId,$timestamp,$nonceStr,$signature) => {
wx.config({
debug: false,// 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。移動端會經過彈窗來提示相關信息。若是分享信息配置不正確的話,能夠開了看對應報錯信息
appId: $appId,
timestamp: $timestamp,
nonceStr: $nonceStr,
signature: $signature,
jsApiList: [//須要使用的JS接口列表,分享默認這幾個,若是有其餘的功能好比圖片上傳之類的,須要添加對應api進來
'scanQRCode', // 掃一掃
'checkJsApi',
'onMenuShareTimeline', // 分享到微信朋友圈
'onMenuShareAppMessage', // 分享到朋友
'onMenuShareQQ', // 分享到QQ好友
'onMenuShareWeibo' // 分享到微博
]
});
};
複製代碼
/**
* 調起掃碼
*/
export const wxScanQRCode = (successFun) => {
wx.scanQRCode({
needResult: 1, // 默認爲0,掃描結果由微信處理,1則直接返回掃描結果,
scanType: ["qrCode","barCode"], // 能夠指定掃二維碼仍是一維碼,默認兩者都有
success: function (res) {
var result = res.resultStr; // 當needResult 爲 1 時,掃碼返回的結果
successFun && successFun(result);
}
});
}
複製代碼
/**
* 微信分享
*/
export const wxShareConfig = ($imgUrl,$desc,$title,$link,successFun) => {
wx.ready(function () {
wx.onMenuShareAppMessage({
"imgUrl": $imgUrl,//分享圖,默認當相對路徑處理,因此使用絕對路徑的的話,「http://」協議前綴必須在。
"desc" : $desc,//摘要,若是分享到朋友圈的話,不顯示摘要。
"title" : $title,//分享卡片標題
"link": $link,//分享出去後的連接,這裏能夠將連接設置爲另外一個頁面。
"success":function(response){//分享成功後的回調函數
let onMennuShareId = 1;
successFun && successFun(response,onMennuShareId);
},
'cancel': function () {
// 用戶取消分享後執行的回調函數
}
});//分享給好友
wx.onMenuShareTimeline({
"imgUrl": $imgUrl,//分享圖,默認當相對路徑處理,因此使用絕對路徑的的話,「http://」協議前綴必須在。
"desc" : $desc,//摘要,若是分享到朋友圈的話,不顯示摘要。
"title" : $title,//分享卡片標題
"link": $link,//分享出去後的連接,這裏能夠將連接設置爲另外一個頁面。
"success":function(response){//分享成功後的回調函數
let onMennuShareId = 3;
successFun && successFun(response,onMennuShareId);
},
'cancel': function () {
// 用戶取消分享後執行的回調函數
}
});//分享到朋友圈
});
};
複製代碼
須要注意的點: 1.獲取簽名發送的url必定要是當前頁面的url,否則會簽名失敗; 2.發送的當前url若是沒有帶參數,而後編碼後再發過去,在ios下會出現第一次獲得簽名時是失敗的,刷新後再獲得才成功,在安卓下沒有問題;解決方法是不帶參數的url不用編碼 3.發送的當前url若是後面帶有參數,不編碼發送獲取簽名是成功的;可是若是是作分享,在分享好的頁面若是再要調起微信簽名,會簽名失敗,這種狀況就須要編碼後才發送url,就能夠屢次簽名都成功服務器
/**
*發送當前頁面的url,從後臺獲得相應的appid、timestamp、nonceStr、signature
*/
callAxios({
method: 'get',
url: `${APP_CONFIG.getwechatSign}?url=${window.location.href}`,
})
.then((response) => {
wxConfig(response.data.appId, response.data.timestamp, response.data.nonceStr, response.data.signature);
})
複製代碼
// 微信自定義分享連接和圖文
wxShareConfig($imgUrl,$desc,$title,$link, function(response) {
});
複製代碼
wxScanQRCode (function(response) {
let index = response .lastIndexOf("\,");
response = response .substring(index + 1, response.length);
// response是獲得的返回值
});
複製代碼