获取授权
在小程序插件中使用时,需要在用户信息功能页中获得用户授权之后调用
由于微信官方修改了 getUserInfo 接口,所以现在无法实现一进入微信小程序就弹出授权窗口,只能通过 button 中的type= getUserInfo 去触发。官方连接
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserInfo.html
WXML 部分
<button class="button" open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo">
授权登录
</button>
JS 部分
bindGetUserInfo(e) {
if (e.detail.userInfo == undefined) {
console.log("用户已取消授权");
} else {
console.log("用户授权成功!");
}
}
open-type 类型
getUserInfo 获取用户信息
bindGetUserInfo 绑定回调函数
点击效果如下
登录流程
js 事件 可为用户主动触发也可写入生命周期函数
// 获取用户信息
wx.getUserInfo({
// 成功回调
success: function (res) {
console.log(res.userInfo)
// 直接调用登录接口
wx.login({
// 超时时间设置
timeout:10000,
// 使用async await 代替 .then
success: async (result)=>{
// URL 为登录的接口 功能为 自动注册登录
let {
data} = await request("URL",{
// 是否自动注册
autoReg:true,
// wx.login() 返还的 code
code:result.code,
})
// 全局变量保存token
app.globalData.token = data.data.token
// 跳转至主页或会员页面
wx.switchTab({
url: 'url',
})
},
// 登录失败提示
fail: ()=>{
console.log('请求失败!可再次尝试');
},
});
}
})
判断用户是否授权
// 获取用户授权信息
wx.getSetting({
// 执行成功
success: resData => {
// 用户授权
if (resData.authSetting['scope.userInfo']) {
// 获取用户信息
wx.getUserInfo({
success: res => {
// 登录 更新信息
wx.login({
timeout: 10000,
success: async (result) => {
let {
data
} = await request("user/wxapp/login", {
code: result.code,
})
// 更新 token
this.globalData.token= data.data.token;
},
fail: () => {
},
});
}
})
} else {
console.log("未授权");
// 跳转至授权页
wx.redirectTo({
url: '../../package/pages/authorize/authorize',
})
}
}
})