背景
小程序一个重要的能力就是获取用户信息,也就是使用wx.
我们发现几乎所有的小程序都会调用这个接口,虽然我们在设计文档中提出,最好的设计是在真正需要用户信息的时候才获取用户信息,但很多开发者并没有按照我们的预期去做,导致用户在使用的时候遇到很多麻烦。
可以归结为以下几点:
开发人员可以直接调用wx.
在进行授权的时候,可能会出现弹窗,导致部分用户放弃使用小程序。
开发者没有处理用户拒绝弹窗的情况,部分小程序强制用户授权头像、昵称等信息后才能继续使用小程序。
虽然我们在之前的版本中添加了设置,但用户没有很好的重新授权方法
该页面允许用户选择重新授权,但是操作依然不够便捷。
开发人员希望获得用户的
,从而将其与之前关注过该公众号的用户画像进行关联。
默认情况下,开发人员会使用wx。
和 wx。
由于我们最初的设计缺陷和示例代码,使用了绑定:
必须通过 wx 传递。
后台生成
可以稍后调用。
为了解决上述问题,我们更新了三项功能:
使用组件获取用户信息,如果用户拒绝授权,会再次弹窗,重新授权。
如果用户满足某些条件(下面详细介绍),他就可以使用wx。
得到的代码直接转换为
wx.
不依赖于wx。
您可以致电获取数据。
获取用户信息组件介绍
组件更改:
开放式
已添加属性
:当用户点击时触发
事件。
新活动
:开放式
为了
当用户点击时,就会触发。你可以从事件中返回参数
获取字段并wx。
返回与参数相同的数据。
例子:
Click me
和 wx。
区别在于:
API 瓦特。
该对话框只会弹出一次,如果用户拒绝授权,则用户再次拨打电话时不会再弹出该对话框。
成分
由于是用户触发的,所以弹框的次数没有限制,只要用户不授权,就会再次显示弹框。
直接访问
考虑到很多场景,业务方申请授权主要是为了获取,我们鼓励开发者在不骚扰用户的情况下合理获取,只在必要的情况下弹窗给用户申请使用昵称和头像。为此,凡是使用“获取用户信息组件”获取用户昵称和头像的小程序,只要满足以下所有条件,即可默默获取。
微信开放平台上,有同一实体的应用程序、公众账号、小程序。
用户关注同一主体的公众账号,或在同一主体的应用或公众账号上授权微信登录。
和
很多开发者会把绑定的调用当做登录,其实可以完成登录,建立账户体系,只是为了获取额外的用户信息而已。
获取到code之后发送给开发者后台,开发者后台通过接口跟微信后台交换(现在也会返回),然后返回给前端,登录行为就完成了。该行为无声无息,不需要授权,不会对用户造成骚扰。
它的存在只是为了提供更好的服务,比如展示头像昵称,判断性别,结合其他公众号已有的用户画像提供历史数据等,所以刚进小程序的时候没必要强制授权。
建议使用
打电话给 wx。
获取代码
,然后从微信后台兑换为
,用于解密
返回了敏感数据。
使用 wx。
获取用户的授权状态
如果用户已经授权,则直接调用.
获取用户的最新信息
若用户还未授权该服务,界面上会显示按钮提示用户登录,当用户点击按钮并授权该服务后,就会获取到用户的最新信息。
获取到用户数据之后,你可以展示出来或者发送到自己的后端。
文档已更新
注意
为了给用户提供更好的小程序环境,我们同意在一段时间后(具体时间另行通知),若仍出现以下情况(包括但不限于),该小程序将无法通过审核
首次打开小程序时,会弹出一个弹窗要求输入用户授权信息。
用户拒绝授权的情况不予处理
强制用户授权
已上线的小程序不受影响。
常问问题
Q:另外,比如地点信息---‘风之约定’。
A:其他授权信息不像用户信息那么频繁,而且授权基本都是用到的时候才申请,所以就不一一给出了,我们会先看用法,然后结合具体的场景再给出相应的解决方案
Q:后台需要维护用户信息---
我们的小程序业务是需要授权才能使用所有功能(也就是你必须获取用户信息)---
我小程序和服务号里的数据需要互通,确定用户的唯一性。如果用户进小程序后不强制授权,只用一个来存他的用户数据,那么用户下次从服务号进去的时候,不就产生了重复的数据吗?数据不互通——ﺭ吐你ﺭ五年。
另外我看官方提到会强制执行,我想说我们现在所有的用户都是注册的,那么这些用户就得重新登录注册,更重要的是他们之前的相关数据会不匹配(因为你不允许强制用户登录授权)--- 洋猫
这个方案不能满足我们的需求,我们的小程序一进去就得获取它的信息,然后加载它的数据;---韩语
A:调用wx.已经可以获取用户的登录状态,管理用户账号了,额外信息都已经包含了,不需要这些信息也可以完成登录。
对于需要绑定开发平台进行数据互通的业务,新用户即使没有互通数据也可以体验所有业务,对于未授权用户,可以视为新用户,真正授权后完全可以绑定。
Q:我需要保证用户的唯一性,所以必须要获取,不然如果用户删除了小程序或者更换了设备,下次进入小程序的时候用什么来区分上次来的用户? --- WEI+
A:如果你没有其他公众号、应用、小程序的话,那你不需要获取它,因为它是连接你在开放平台上所有应用的ID。
如果只有一个小程序,则使用就足以作为小程序的用户标识符,该标识符永远不会改变。
Q:wx.是网络请求,如果使用了open-type="",是不是每次点击都会调用接口?---
A:是的,open-type=""的功能和内部实现和wx基本是一样的。
区别在于一个是开发者发起的(拒绝一次后不再弹窗),一个是用户发起的(拒绝任意次数后都会再次弹窗)
Q:比如有个创建按钮,用户点击一次就是授权,我已经获取到用户信息了,如果用户再次点击,就不需要再次调用网络请求了。---
A:可以参考文章中的方法,如果已经授权过,可以隐藏该按钮,后续授权直接用wx API调用即可(既然已经授权过,就不会有弹窗),用户不会再点击。
Q:小程序需要微信自带授权才能登录吗?可以不用授权登录,用自带系统的API接口数据实现吗?这样会涉及到审核不过关的问题吗??请回答这个问题,谢谢。---WEI+
答:自己登录不会涉及任何审计问题。
但不建议在没有原有账号体系的情况下,让用户在小程序内注册,过度的行为会造成用户的流失。
Q:小程序里有一个“我的”页面,是会员页面,用户如果想进这个页面,必须授权。交互方式是,如果用户不授权,整个页面只显示一个授权访问用户信息的按钮,这个按钮需要用户自己去触发,这算是强制授权吗? ---ﺭ 又吐槽你ﺭ 五年。
A:强制授权就是如果用户不授权基本信息,那么连最基本的浏览功能都不提供(当然这个也要看具体的业务场景,不会太死板的限制)
可以有更好的交互,比如你未登录的情况下点击【我的】页面,不会直接要求你登录,而是展示一定的页面结构,提供登录按钮(如【携程】、【京东】等),如果后续在这个页面上进行操作,再弹出登录页面或者按钮提示用户登录,也是完全可以接受的。
上面说的登录只是用户感知的登录,从业务逻辑上来说,用户在wx上的时候才真正完成了登录。
Q:看了很多评论,还是有人不明白官方为什么要这么做,我站在商家的角度解释一下吧。---Mr.J
比如我们要用一些户外的宣传二维码,用户看到的只是你的图片宣传单,当他们扫描二维码打开的时候,会提示“我们需要获取你的个人信息,你是否允许?”你不要把自己当成一个开发者或者一个普通人,我相信很多人看到这个提示的第一反应就是拒绝,如果第一步就已经把你拒之门外,还谈什么营销?
在小程序上线之前,我们公众号上有很多用户,都是绑定的。上线小程序之后,我们考虑怎么让用户接受小程序。我觉得静默登录很好,公众号过来的用户,不用任何提示,直接登录就可以了,衔接的很完美,体验非常好。
A:说得好。我们的转型不只是针对开发者,也针对这个生态里的用户。我们希望开发者也能站在用户的角度去思考如何做一个产品。
Q:我不明白为什么不能提供多个?这不能算是个人信息。提供多个可以让开发者更方便,而且很多时候不需要调用---
我们有个建议,能不能直接打开?这样很多小程序可能就不需要弹窗了。这样既能在一定程度上保证用户体验,又能兼顾我们开发者的体验。---羊毛
A:如果直接打开,就会出现这种情况:当你以用户身份进入一个小程序时,这个小程序会直接显示你的头像昵称而不会征求你的授权(它之前已经保存了对应的头像昵称),但你却从来没有使用过这个小程序实体相关的任何应用(开放平台实体和公众平台实体不一样)。你会不会觉得奇怪和不舒服,觉得自己在微信里的用户信息一点都没有受到保护?
Q:有没有什么好的例子可以推荐?对于必须使用用户头像和昵称的小程序---亚里士多德
A:首先,没有需要用户头像或者昵称才能起作用的逻辑,对于这种情况,可以先替换为默认头像或者匿名昵称,当用户点击默认头像时,会弹出授权信息,很自然。
Q:之前一直在思考这个帖子,如果用户一进入页面就需要把用户的位置信息展示在地图上怎么办?这个算不算一进入页面就弹窗授权获取用户信息? --- 吴俊基
A:地图与获取用户信息不同,我们尚未对地图授权请求做出任何调整,目前不受上述政策影响。
Q:对开发者来说,小程序和公众号是同级的,只是入口不同。但这样的设计,让公众号和小程序变成了主从关系。——①
A:不存在主从关系,只是给开发者提供了一个额外的渠道,让他们可以更方便的获取主题的用户。