1、登陸html
https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html小程序
一、步驟api
(1)調用接口wx.login(OBJECT)獲取登陸憑證(code)。服務器
(2)再將code傳遞給第三方服務器,第三方服務器請求微信服務器https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code微信
(3)成功微信服務器返回openid(用戶惟一標識),session_key(會話密鑰),unionid(用戶在開放平臺的惟一標識符),失敗微信服務器{ "errcode": 40029,"errmsg": "invalid code"}網絡
(4)登錄狀態驗證:這裏的session是第三方服務器生產的。session
wx.checkSession({ success: function(){ //session 未過時,而且在本生命週期一直有效 }, fail: function(){ //登陸態過時 wx.login() //從新登陸 .... } })
2、提早向用戶發起受權請求app
// 能夠經過 wx.getSetting 先查詢一下用戶是否受權了 "scope.record" 這個 scope wx.getSetting ({success(res) { if (!res.authSetting['scope.record']) { wx.authorize({ scope: 'scope.record', success() { // 用戶已經贊成小程序使用錄音功能,後續調用 wx.startRecord 接口不會彈窗詢問 wx.startRecord() } }) } } })
3、獲取用戶信息this
wx.getSetting({ success: res => { if (res.authSetting['scope.userInfo']) { // 已經受權,能夠直接調用 getUserInfo 獲取頭像暱稱,不會彈框 wx.getUserInfo({ success: res => { // 能夠將 res 發送給後臺解碼出 unionId this.globalData.userInfo = res.userInfo; console.log(res.userInfo); // 因爲 getUserInfo 是網絡請求,可能會在 Page.onLoad 以後才返回 // 因此此處加入 callback 以防止這種狀況 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } })