兄弟们,我又要写一篇小程序登录相关的文章了,因为时代变了,小程序接口又又又又调整了。
2022-05-09 调整

此后小程序无法直接获取头像和昵称。只能通过个人中心或设置等页面使用头像昵称填写能力让用户完善个人资料。小程序这样搞了,微信网页和公众号还会远吗?

参考头像昵称填写
2021-12-27 调整
open-data没用了。
开发者在未获取用户明示同意的情况下通过
- 头像展示 灰色头像
- 用户昵称展示“微信用户”
- 用户性别、地区、语言展示为为空(“”)
小程序通过
2021-09-26 可使用的功能
当前能获取到的用户信息只有:
- 昵称nickName,通过wx.getUserProfile获取,每次获取微信均会弹框要求用户授权
- 头像avatarUrl,通过wx.getUserProfile获取,每次获取微信均会弹框要求用户授权
- openid,通过wx.login获取到code后,发给后台,后台调用auth.code2Session中提到的url,获取openid
- unionid,通过wx.login获取到code后,发给后台,后台调用auth.code2Session中提到的url,如果已经在开放平台绑定,则可直接获取unionid
所以用户信息这一块,你会发现用session_key加解密好像不需要了。
但是session_key就没用了吗?不是滴,有些接口还是有用滴,例如获取微信步数的接口wx.getWeRunData ,如果你的应用是根据用户每天运动了多少步去判定用户完成任务与否,给用户发放奖励的话,一旦有鸡贼的用户利用IT知识,拿到了你系统的token,然后每天就可以直接用token调你的接口,给你传假的微信步数数据了。
最简单的想拿昵称和头像,直接调wx.getUserProfile
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
console.log(res)
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
调用返回的userInfo可以直接读取里面的avatarUrl和nickName。



2021-09-26 调整
不管是小程序、公众号还是Open平台(包括微信网页),用户性别及地区信息以及语言信息都只返回为空或者默认值了。腾讯称这样做是为了保护用户隐私。

*注:字段名均保持不变,小程序与小游戏获取用户信息接口“用户性别”字段名为gender;Open 平台授权接口“用户性别”字段名为 sex
不过这个修改应该影响不大,因为它还是返回值的,只是返回的值没有了参考意义,对于老用户,可以不去管它;对于新用户,在开发的时候就可以不存储这几个字段了。
哦,对了,这里还是有个坑,现在的小程序文档并没有备注它改成了统一返回默认值,比如这个文档:UserInfo 所以用户如果不看公告的话,可能还被蒙在鼓里,纳闷,为啥获取不到性别和地区咧。就比如这位大兄弟的灵魂拷问:获取用户信息UserInfo的性别返回0?
2021-04-15 调整
这波更新影响比较大,更新了:
- wx.login,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID
- wx.getUserInfo、将不再弹出弹窗,直接返回匿名的用户个人信息,获取加密后的openID、unionID数据的能力不做调整。
- 新增了getUserProfile,开发者每次通过该接口获取用户个人信息均需用户确认,请开发者妥善保管用户快速填写的头像昵称,避免重复弹窗。
这次更新后的最佳实践为:
调整后,开发者如需获取用户身份标识符只需要调用wx.login接口即可。
开发者若需要在界面中展示用户的头像昵称信息,可以通过
在部分场景(如社交类小程序)中,开发者需要在获取用户的头像昵称信息,可调用wx.getUserProfile接口,开发者每次通过该接口均需用户确认,请开发者妥善处理调用接口的时机,避免过度弹出弹窗骚扰用户。


Comments