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) } } }) } } })