小程序获取不到用户权限这是为什么?

2025-04-29 13:36:02
推荐回答(1个)
回答1:

以获取用户信息直接登录为例。增加一个授权页面,作为进入小程序的第一个页面,在这里获取用户数据和登录。默认可以什么都不显示,也可以当做引导页来使用。

获取用户信息需要用到 wx.login 和 wx.getUserInfo 两个 API,关于这两个 API 的具体信息大家可以到官方文档去查看。

增加一个登陆方法,代码如下:

//登录login: function () {
var that = this
if (typeof success == "function") {    this.data.getUserInfoSuccess = success
}
wx.login({
success: function (res) {
var code = res.code;
wx.getUserInfo({
success: function (res) {
//平台登录
},
fail: function (res) {
that.setData({
getUserInfoFail: true
})
}
})
}
})
}12345678910111213141516171819202122

当上门代码走到了 fail 里面,就可以认为在获取授权的时候,用户点了拒绝。当 getUserInfoFail 为 true 的时候,可以展示一个获取授权的按钮,比如像这样:

接下来介绍另一个 API : wx.openSetting,使用 wx.openSetting 可以跳转到小程序的授权设置界面,在安卓里面它长这样:

在点击授权按钮后跳转到这里,让用户授权了才给进入首页,否则就停留在授权页面。

但还有个小问题,这个 API 是基础库 1.1.0 才有的,所以需要做兼容处理:

所以,最终跳转授权的代码如下:

//跳转设置页面授权openSetting: function () {
var that = this
if (wx.openSetting) {
wx.openSetting({
success: function (res) {
//尝试再次登录
that.login()
}
})
} else {
wx.showModal({
title: '授权提示',
content: '小程序需要您的微信授权才能使用哦~ 错过授权页面的处理方法:删除小程序->重新搜索进入->点击授权按钮'
})
}
}1234567891011121314151617

还好 1.1.0 已结算是比较早的版本了,现在都出到 1.3.0 了。