一、前言
由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过 button 去触发。
官方连接:https://developers.weixin.qq.com/community/develop/doc/0000a26e1aca6012e896a517556c01
二、实现思路
- 刚开始进入小程序时,先判断是否授权。
- 如果没有授权,显示授权button按钮,让用户实现点击的功能,就是通过 button 组件去触发 getUserInof 接口,通过调用wx.login 获取code码,读取登录接口,判断用户是否是新用户。
- 如果是新用户,则接着通过调用wx.login 获取code码,然后读取注册接口,注册完之后再读取登录,保存后台返回的token,实现登录。
- 如果不是新用户,也是保存后台返回的token,则直接获取个人信息。
- 如果已经授权了,再判断token是否存在,如果不存在,则读取登录接口,跟上面步骤一样。
- 如果存在,则直接跳过这个页面,进入首页。
实现登录的代码
app.js
// 获取用户信息
wx.getSetting({
success: res => {
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
wx.getUserInfo({
success: res => {
// 可以将 res 发送给后台解码出 unionId
this.globalData.userInfo = res.userInfo
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
if