- 注意openid并不能作為小程序用戶的唯一標(biāo)識(shí)呜达,不同用戶有可能相同谣蠢,unionid才是唯一標(biāo)識(shí),這個(gè)參數(shù)我們需要后臺(tái)去微信綁定小程序后才有。(通過https://api.weixin.qq.com/sns/jscode2session接口返回的參數(shù)獲得)
方法一(前端獲让减狻)
注意:雖然前端能拿到openid挤忙,但是發(fā)布上線的時(shí)候會(huì)無法過審,因?yàn)槌鲇诎踩紤]谈喳,前端代碼不允許暴露小程序appId和app secret(秘鑰)册烈,所以此種方法不可取。
1婿禽、登錄憑證校驗(yàn)赏僧,通過 wx.login() 接口獲得臨時(shí)登錄憑證 code 后傳到開發(fā)者服務(wù)器調(diào)用此接口完成登錄流程。更多使用方法詳見 小程序登錄扭倾。
2淀零、接著訪問 https://api.weixin.qq.com/sns/jscode2session?
wx.login({
success: function (res) {
console.log(res)
if (res.code) {
console.log('通過login接口的code換取openid');
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
//填上自己的小程序唯一標(biāo)識(shí)
appid: '',
//填上自己的小程序的 app secret
secret: '',
grant_type: 'authorization_code',
js_code: res.code
},
method: 'GET',
header: { 'content-type': 'application/json'},
success: function(openIdRes){
console.info("登錄成功返回的openId:" + openIdRes.data.openid);
},
fail: function(error) {
console.info("獲取用戶openId失敗");
console.info(error);
}
})
}
}
})
方法二(后端獲忍乓肌)
前面我們說過前端獲取openid的方法驾中,項(xiàng)目上線是無法過審的。現(xiàn)在我們把小程序id和app secret給后臺(tái)模聋,讓后臺(tái)去請(qǐng)求肩民,然后將返回值通過接口返回給我們,就可以了链方。另外持痰,我們通過后臺(tái)接口返回的參數(shù)unionid作為用戶唯一標(biāo)識(shí)
wx.login({
success: function (res) {
console.log(res)
wx.request({
url: '后臺(tái)通過獲取前端傳的code返回openid的接口地址',
data: { code: code },
method: 'POST',
header: { 'content-type': 'application/json'},
success: function (res) {
if (res.statusCode == 200) {
console.log(res.data.result.openid);
console.log(res.data.result.unionid);
} else {
console.log(res.errMsg)
}
},
})
}
})
這樣,我們就大功告成V度帷9部小占调!