由于收到开发者的反馈,为了方便开发者更好地使用获取用户信息的接口,开发者仍然可以使用 wx.getUserInfo 接口获取用户信息。
具体优化调整如下:
1.获取用户头像昵称,第一次需要使用 button 组件授权,如果已经用组件授权了,wx.getUserInfo 可直接返回用户数据,无需重复授权弹窗。
2. 如果没有用 button 组件授权,wx.getUserInfo 调用接口返回失败,提醒开发者需要先使用 button 组件授权。
3. 用户可在设置中,取消授权。取消授权后需重新用 button 组件拉起授权。
此次调整仅会影响开发者工具、体验版和开发版,正式版本小程序暂不受影响。
详细可见如下接口文档:
小程序:
1.使用 button 组件,并将 open-type 指定为 getUserInfo 类型,用户允许授权后,可获取用户基本信息。
详情参考文档:
https://developers.weixin.qq.com/miniprogram/dev/component/button.html
2.使用 open-data 展示用户基本信息。
详情参考文档:
https://developers.weixin.qq.com/miniprogram/dev/component/open-data.html
小游戏:
1.使用用户信息按钮 UserInfoButton。
详情参考文档:
2.开放数据域下的展示用户信息。
详细参考文档:
https://developers.weixin.qq.com/minigame/dev/document/open-api/data/wx.getUserInfo.html
请各位开发者注意及时调整接口,正式版未来也会逐步切换为这个逻辑。
现在如何判断用户是否已授权?拜托接口更新之后文档也更新一下,旧的内容和demo都去掉,不要整得前后矛盾,逻辑都不通。
吃饱了,没事干,,,,,,,,
为这个问题昨晚又折腾到凌晨2点
大哥,编辑器出了问题了啦,你就是改了接口,我也无法调试修改代码啊,兄弟。。。。。快出来解决下啊。。
既然已经废弃了scope.userInfo,那么我如何判定用户是否已经通过button组件授权过了???没法判断wx.getUserInfo这个接口不是依然没用???没用是不是就意味着每次都要让用户点一次button???这你叫优化了用户体验么???
bindGetUserInfo: function (e) { //用户授权
var that = this;
//console.log(e.detail.userInfo);
var code = that.data.code;
// console.log(code);
if (code) {//如果code存在则获取用户授权
console.log("code:" + code);
// 查看是否授权
wx.getSetting({
success: function (res) {
console.log(res);
if (res.authSetting['scope.userInfo']) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wx.getUserInfo({
withCredentials: true, //是否带上登录态信息
success: function (res) {
//console.log(res);
app.globalData.userInfo = res.userInfo; //赋值用户信息
that.setData({
userInfo: res.userInfo,//赋值用户信息
});
//console.log(app.globalData.userInfo);
var user_name = res.userInfo.nickName //储存用户名字
var image_url = res.userInfo.avatarUrl //储存用户头像
var iv = res.iv;
var proxySend = res.iv;
var encryptedData = res.encryptedData;
//发起网络请求
wx.request({//请求php后台授权拿到openid
url: app.globalData.allUrl + 'miniProgramsLogin',
data: {
code: code,
iv: iv,
encryptedData: encryptedData,
},
method: 'POST', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
// header: {}, // 设置请求的 header
header: {
'content-type': 'application/x-www-form-urlencoded' // 默认值
},
success: function (res) { //后台返回userId
console.log(res); //拿到openid
var userId = res.data.userId;
var jiapuId = res.data.jiapuId;
if (userId) {
app.globalData.userId = userId; //赋值用户信息
that.setData({
userId: userId, //userId渲染
});
// console.log(userId);
}
if (jiapuId) {
wx.setStorageSync('hasJiapuId', jiapuId); //缓存家谱id
app.globalData.jiapuId = jiapuId; //赋值用户信息
that.setData({//设计家谱id判断是制作家谱还是查看家谱
hasJiapuId: jiapuId,
jiapuId: jiapuId, //家谱id
});
//console.log(jiapuId);
}
},
error: function (res) {
console.log("调用java---miniProgramsLogin失败 ");
}
})
}
})
}
}
})
意义在哪 ??????强烈要求 改回原来的方式!
说真的,真有必要拿个头像昵称也要用户授权吗!?在微信里给用户一个选项,直接统一授权好了,设置是否接受小程序小游戏调用头像昵称(仅限头像昵称和openId)权限,这样也是拥有知情权了;现在每个用户进来都要点一下,否则就要退出,真心多余!
牛逼了,测试到最后阶段,马上要上线了,突然生效了!真的是牛逼!哪来的时间改?