必要的前提準備
1.微信認證過的公共號
必須是認證過的,未認證或者認證過期都不行
2.一個域名
需要備案過的
3.一臺伺服器
前端頁面需要的appId、signature是需要後臺傳遞過來的。官方預設後臺程式有PHP、Python、Node、Java版本
配置過程
繫結域名
先登入微信公眾平臺進入“公眾號設定”的“功能設定”裡填寫“JS介面安全域名”(釋出用的那個域名)
獲取access_token
這部分工作屬於後臺開發,主要功能是利用公眾號APPID、APPSECRET從微信伺服器獲取對應的access_token。
前端許可權驗證配置
步驟一:引入JS檔案
在需要呼叫JS介面的頁面引入如下JS檔案,(支援https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js
步驟二:從後臺得到許可權驗證配置資訊
封裝許可權驗證配置資訊函式
/**
* 微信授權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 () {
// 使用者取消分享後執行的回撥函式
}
});//分享到朋友圈
});
};
複製程式碼
步驟三:獲取微信SDK簽名,呼叫微信掃一掃、分享
獲取微信SDK簽名,開發專案中遇到的問題
需要注意的點: 1.獲取簽名傳送的url一定要是當前頁面的url,不然會簽名失敗; 2.傳送的當前url如果沒有帶引數,然後編碼後再發過去,在ios下會出現第一次得到簽名時是失敗的,重新整理後再得到才成功,在安卓下沒有問題;解決方法是不帶引數的url不用編碼 3.傳送的當前url如果後面帶有引數,不編碼傳送獲取簽名是成功的;但是如果是做分享,在分享好的頁面如果再要調起微信簽名,會簽名失敗,這種情況就需要編碼後才傳送url,就可以多次簽名都成功
獲取微信SDK簽名使用方法
/**
*傳送當前頁面的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是得到的返回值
});
複製程式碼