为了优化用户的使用体验,平台将回收“使用 wx.getUserInfo 接口直接弹出授权框”以及“使用 wx.authorize 接口直接申请提前授权用户信息”的能力,开发者需要使用组件方式唤起登录授权弹窗。
2018年10月10日后发布新版本的小程序,将无法在线上版本中使用接口直接弹出授权框。开发者可结合平台设计建议,提前做好兼容,合理使用微信登录能力。
能力调整背景
怎么合理使用微信登录能力
小程序登录流程设计建议
01
能力调整背景
推出微信登录能力的初衷是希望:当用户使用小程序时,可以便捷地使用微信身份登录小程序。但在实际使用场景中,我们发现:很多开发者在打开小程序时直接弹出授权框,如果用户点击拒绝授权,无法使用小程序。
在用户无法获知当前小程序服务内容的情况下,很多用户就会选择拒绝授权并离开当前小程序。所以“一进入小程序就要求用户授权”的做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。
所以平台调整登录接口,回收“使用 wx.getUserInfo 接口直接弹出授权框”以及“使用 wx.authorize 接口直接申请提前授权用户信息”的能力,并鼓励开发者参照以下指引合理改造小程序内的登录流程。
02
怎么合理使用微信登录能力
平台分别提供多种方式实现微信登录:
1. 调用wx.login接口,静默获取openid
适用场景:无需使用用户头像、昵称、Unionid信息
2. 使用 open-data (小程序)或者开放数据域(小游戏)的方式展示用户信息(无需用户授权)
适用场景:需要在前端“展示”用户头像、昵称信息,但不需要获取Unionid
3.使用button(小程序)或UserInfoButton(小游戏)组件,用户点击后弹窗请求用户授权
适用场景:需要获取用户头像、昵称、Unionid等基本信息
开发建议
第一步:获取openID
当用户访问小程序时,先通过wx.login,获取用户openID 。这时无需弹框授权,开发者拿到 openID 可以建立自身的帐号 ID。
第二步: 使用open-data方式或开放数据域方式展示头像昵称
如需要在前端展示用户头像、昵称信息, 使用open-data 方式或者开放数据域的方式展示用户信息
第三步:根据实际使用场景,使用组件,引导用户登录
在关键操作中,如必须获取用户头像、昵称、UnionID信息,可根据第一步获取的openID判断是新用户还是旧用户:
如果是旧用户,可以直接登录,也可定期使用wx.getUserInfo更新用户的信息;
如果是新用户,使用button(小程序)或UserInfoButton(小游戏)组件,在用户点击后弹窗请求获取用户基本信息。
03
小程序登录流程设计建议
a. 在必须用到登录信息的环节引导用户登录
在用户必须登录时才引导用户登录(如:购买前需要获取会员信息,用于同步积分数据),而不是用户一进入小程序就弹窗要求用户授权。如只需要在前端展示用户头像、昵称,无需要求用户授权,可直接展示。
b.清晰、准确地引导用户登录
在登录页面中,清晰、准确地告知用户当前操作是登录,说明获取登录信息的目的(如:用于同步会员积分数据等)
c. 不强制用户必须登录后才能使用小程序服务
提供游客模式,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。
之前使用 wx.login 解密之后是有 unionId 的,这里说得不太清楚,意思是 10.10 以后,解密也没有 unionId 了,一定要点按钮的解密才有?
小程序本身就是简化简单,你这么改完,操作变的繁琐,用户也要多操作一步骤~感觉再这么玩下去~小程序要凉凉啊~
描述:按照小程序指引的登录流程,用wx.login获取的code和点击授权按钮后获取的用户信息去换取token, token有效期由后端维护,在token过期的情况下,需要重新获取token,目前会再次进入有授权按钮和说明的页面,让用户重新授权,
问题:
1. 但有时候会出现点击授权按钮无法调出授权弹框的问题,该问题有时候通过删除小程序重新进入可解决,有时需要删除微信重新安装才能解决,但无法人为重现问题,找不到问题的原因,每次总让用户尝试删除小程序和删除微信重装也不是办法,请问官方对此问题是否有什么方案?
2. 微信用户信息授权应该是有一定有效期的,在有效期内不需要重新点击按钮授权?若是的话,在token过期的时候,用户信息授权极有可能还在有效期,是不需要再让用户点击按钮授权的,那么,如何查询用户信息授权是否过期呢,似乎目前没有这样的API?
意思就是说,如果10月10日后不发布新版本,之前的版本是不受影响的吧?
太为难前端,请直面大佬的眼神。
如果是旧用户,可以直接登录,也可定期使用wx.getUserInfo更新用户的信息;
如果是新用户,使用button(小程序)或UserInfoButton(小游戏)组件,在用户点击后弹窗请求获取用户基本信息。
官方确认下,是否可以统一调用wx.getUserInfo,当用户为新用户(或删除过授权)时则调用wx.getUserInfo失败,进入它的fail回调中,这时候再进入button组件授权的流程?
哈哈哈,估计很多程序员过不了中秋啦
感觉越开发越迷茫,你们是想起来什么是什么吗
现在用云函数可以直接获取openID
真不想吐槽~ 有毒