为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持。从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。正式版暂不受影响。开发者可使用以下方式获取或展示用户信息:
一、小程序:
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
请各位开发者注意及时调整接口。
理解正确
请问到底是wx.getUserInfo仅仅不弹窗了,还是这个接口就废弃了啊
仅不弹窗
哦哦,那就好,不然涉及到这个接口的逻辑改动就比较大了
默认调用失败啊,还是要改的吧。
其实这个不只是首页的问题啊,我们内页也可以分享出去,当新用户点击内页链接打开小程序时,首页的授权登录按钮是不会出现的。所以就只能通过全局appjs去授权,现在全局的getuserinfo竟然不给用了卧槽!全局appjs里我们没办法去设置授权登录按钮让用户去授权登录啊!
我们的小游戏排行榜需求上要突出显示自己的排行和分值,开放数据域的获取朋友列表接口有返回openId,但是获取自己的信息返回的openId值是"selfOpenId"!!!导致不能精确判断排行列表里面哪个是自己,同时如果主域的获取用户信息接口要取消,不能通过主域告诉开放数据域自己的openId,这个怎么办?难道要通过昵称、头像、分数来判断?这个做法也太坑了吧。
支持这个策略
批评的各位可以反思下各自以及其他的产品,我使用过的小程序基本上都是一进入便无脑弹窗获取用户信息,甚至于如果拒绝授权造成整个小程序都无法使用。
这是什么生态?
至于会影响众多开发者,这是必然的事情,不过我觉得还好,就是多增加一个交互过程,改一下授权代码(当然影响也是蛮大的)
另外微信团队也可以制订一些规则(比如不允许无脑弹窗)来增加用户体验,不过众多产品都是不怕走钢丝的,个人认为直接废弃这个接口干脆些。
我不觉得这是微信自己 sb 而草率做的决定。
刚才试了小程序的open-data,头像显示太不友好,我把组件设置了圆角,但图片还是显示成方形,也不能像image组件那样,支持裁剪
onLoad:
function
() {
//1.静默操作获取用户信息 调用wx.login
var
that =
this
;
wx.login({
success:
function
(res) {
var
code = res.code;
//2.登录凭证code
console.log(
'code==='
+ code);
if
(
null
!= code) {
wx.getUserInfo({
success:
function
(ress) {
console.log(
'res==='
+ res);
//3.请求自己的服务器,解密用户信息
wx.request({
url:
''
,
method:
'post'
,
header: {
'content-type'
:
'application/x-www-form-urlencoded'
},
data: { encryptedData: ress.encryptedData, iv: ress.iv, code: code },
success:
function
(res) {
console.log(
'resjava==='
+ res.data.openId);
that.setData({
backUserInfo: res
//将后台返回的数据赋值给backUserInfo
})
}
})
}
})
}
}
})
if
(app.globalData.userInfo) {
this
.setData({
userInfo: app.globalData.userInfo,
hasUserInfo:
true
})
}
else
if
(
this
.data.canIUse) {
// 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
// 所以此处加入 callback 以防止这种情况
app.userInfoReadyCallback = res => {
this
.setData({
userInfo: res.userInfo,
hasUserInfo:
true
})
}
}
else
{
// 在没有 open-type=getUserInfo 版本的兼容处理
wx.getUserInfo({
success: res => {
app.globalData.userInfo = res.userInfo
this
.setData({
userInfo: res.userInfo,
hasUserInfo:
true
})
}
})
}
}
这样写是无法正常上线吗?只是提示接口不再出现弹窗。那会影响上线审核吗?
微信开发团队有没有考虑对现有小程序的影响 原有api应该保证兼容 新接口是引导为主 不应该直接把原有接口直接修改或废弃
我就是想知道wx.getUserInfo这个接口是不能用了,还是不能弹出授权框!!!总不能让用户每次进来想看见自己的头像,都要点击一下按钮吧
wx.getSetting({
success:
function
(res) {
if
(res.authSetting[
'scope.userInfo'
]) {
// 已经授权,可以直接调用 getUserInfo 获取头像昵称
wx.getUserInfo({
success:
function
(res) {
app.globalData.userInfo = res.userInfo
console.log(
"已经授权,可以直接获取用户信息"
, res.userInfo)
}
})
}
else
{
}
}
})
上面这种方式在button授权之后还能不能用?能给个明确的解释么。api上明明写着可以,编译器却在报错,搞不懂,搞不懂,惹不起,惹不起啊。
api:https://developers.weixin.qq.com/miniprogram/dev/api/open.html
新版本的创建新的初始状
看到这个回调嵌套我都要吐了
微信就是没事找事么,这样用户体验好吗?点一个按钮在点一个按钮。体验麻烦的要死。意义何在?赶紧改回来吧。不然微信也就这样了,定位授权 登录授权 你在登录基础上又让整个按钮 人家体验小程序 就是在这没事点确定的么
这个决策很草率,没看到对用户体验能提升什么,没看到对腾讯有什么好处,没看到对开发者有什么好处,相反,反而让所有的开发者都不得不折腾出一个button,让所有的小程序用户都多一次点击,体验直线下降。愚蠢!