基于微信生態的產品,微信登陸、模版消息、微信支付、微信分享已經成為標準配置,可以依賴微信強大的用戶基礎和龐大的社交網絡來實現業務目標。
使用微信登錄就是為了獲取openid和用戶的基本信息如昵稱、頭像、性別、所在城市這些內容。如果為了保持多個產品線的用戶統一的話,還需要unionid這個大神器,前提是把APP、小程序、公眾號、網站這些內容綁定到微信開放平臺,訪問 open.weixin.qq.com。否則是獲取不到unionid。
獲取openid有兩種方式
方式一
1、調用wx.login(),獲取code
-
wx.login({
-
success: function (res) {
-
console.log(res.code)
-
}
-
})
2、調用wx.request() 根據code、appid、secret這三個參數獲取openid,建議appid、secret在后臺設置,不要網絡上傳輸,通過wx.request()只要把code傳后臺即可
方式二 1、調用wx.getUserInfo() 獲取encryptedData(加密數據),iv(加密算法的初始向量)
-
wx.getUserInfo({
-
withCredentials:true,
-
success:function(res){
-
var userInfo = res.userInfo
-
var nickName = userInfo.nickName
-
var avatarUrl = userInfo.avatarUrl
-
var gender = userInfo.gender
-
var province = userInfo.province
-
var city = userInfo.city
-
var country = userInfo.country
-
var iv = userInfo.iv
-
var encryptedData = userInfo.encryptedData
-
}
-
})
2、把返回的數據iv、encryptedData進行解密獲取openid,這種方式在能獲取openid的同時,也能獲取到unionid,獲取到的數據如下所示
-
{
-
"openId": "OPENID",
-
"nickName": "NICKNAME",
-
"gender": "GENDER",
-
"city": "CITY",
-
"province": "PROVINCE",
-
"country": "COUNTRY",
-
"avatarUrl": "AVATARURL",
-
"unionId": "UNIONID",
-
"watermark": {
-
"appid": "APPID",
-
"timestamp": "TIMESTAMP"
-
}
-
}
微信官方提供了AES解密的demo有PHP、C++、Node、Python,有一期會專門講,悟空來全棧營小程序組提供了一個JAVA版本,在獲取微信轉發群ID的時候也要用到。
注:wx.getUserInfo()默認是獲取不到iv和encryptedData的,需要請求的參數中設置withCredentials為true
|