收藏
评论

(6)微信登录能力优化官方

小程序和小游戏内的用户登录,我们推荐使用以下两种方式获取用户信息:



按钮组件的登录方式,用户主动点击按钮可以拉起用户授权弹框,获取用户头像、昵称等信息;

在不获取用户信息的情况下,可展示用户头像昵称。


用户在没有任何操作的情况直接弹出授权的登录方式将逐渐不再支持,受影响的有 wx.getUserInfo 接口,以及 wx.authorize 接口传入 scope="scope.userInfo" 的情况。


1

为什么平台要做接口调整?


我们提供了 wx.login 和 wx.getUserInfo 接口,用于获取用户的 openID 和基本信息。


推出这两个接口的初衷是希望:当用户使用小程序时,只有访问到真正需要登录的页面,才需要授权并登录。


但在实际应用中,我们发现很多开发者在打开小程序时直接弹出授权框,如果用户点击拒绝授权,无法使用小程序。


在没有任何提示和背景的情况下,直接弹框想要获得用户信息授权,用户脑子里可能会闪过几个哲学问题:


你是谁?

我在哪里?

我为什么要同意?

……


相当一部分用户下意识会点击“拒绝“授权——这样不合理的登录流程既造成了用户的困扰,还使得用户流失。


用户通过小程序可以快速获取服务,因此在访问小程序的第一个页面非常重要。


对于一个互联网产品而言,第一个页面决定了用户对这个产品的认知,用户会选择是否继续使用这个产品。


一个优秀的互联网产品,能够给用户留下一个好的第一印象,用户可以快速了解你的产品,接收到你想要传递的服务信息,从而产生相应的操作行为。


一个优秀的小程序会吸引用户在小程序里进行探索,完成你期望他们去做的事,比如会员注册、商品购买等。


试想一下如果一个品牌的商品官网,一进入要求用户登录才能查看产品信息是什么感觉呢?


因此良好的用户登录体验非常重要。


2

如何设计登录流程?


用户打开小程序时,看第一眼的时候,开发者需要专注以下两个目标:


精准快速地传达产品理念,开发者要让用户能够快速了解自己的产品和服务;


用户流量进行转化,让用户能方便操作或者交易。


一般而言,用户打开小程序后看到的第一个页面,先不要直接弹出授权框,第一个页面可以包含以下内容:


展示你的小程序功能(如产品、服务、活动等) ,让用户清晰地知道小程序是做什么用的,这些内容可以是你的精选内容;


激发用户的探索欲,通过描述或者图片吸引用户注意力;


按照自己的产品目标,给用户提供清晰明确的下一步操作(查看详情、购买等)。


如果某些特殊小程序在使用前一定需要用户登录,或者已经进行到需要用户登录的操作时,可以将 button 组件(其中 open-type 属性指定为 getUserInfo)放置到页面中,页面上可以大致说明以下要点:


为什么需要我授权?

需要我什么信息?

授权后我得到什么好处呢?


接下来在页面上放置一个明显的登录按钮, 建议这个页面上不要有额外的点击区域,以免分散用户注意力,让用户专注于登录这件事情。


3

简单的开发建议


1

当用户打开小程序时访问第一个页面时,先通过 wx.login,获取用户 openID 。这时无需弹框授权,开发者拿到 openID 可以建立自身的帐号 ID。


2

在第一步中,拿到 openID 后,判断是新用户还是老用户。如果是老用户,可以直接登录;如果是新用户,可先在小程序首页展示你的信息服务,让用户对这个小程序有大概的了解,再引导用户进行下一步的操作。


3

当需要获取用户头像昵称的时候,对用户展示一个登录页面,这个页面只有一个最重要的操作,引导用户进行登录。


小程序中,在页面中加入一个 button 按钮,并将 open-type 属性设置为 getUserInfo 。


以小程序为例:


微信登录


对于功能较简单的小程序或者小游戏而言,如果不是必须要获得用户的头像昵称,建议可先通过wx.login 拿到 openID 后,使用 open-data 方式或者开放数据域的方式展示用户信息,整个过程都无需用户授权。


Tips:


1、在用户登录后,开发者需要存储用户的 unionID,而且建议只把 unionID 作为互通的用户标识,不要直接使用 unionID 作为用户 ID。因为一旦小程序迁移到其他的开放平台下,unionID 是会改变的,而 openID 是不变的。


2、用 button 组件的方式获得用户授权后,调用 wx.getUserInfo 就可以直接获取用户信息。这个的意义在于获取过一次之后,用户有可能改昵称头像,因此为了及时同步,最好是定期获取用户信息。


这里两个小提示:


定期使用 wx.getUserInfo 获取并更新用户的信息;


如果用户授权过一次之后,又在设置中关掉了授权(或者本地删除了小程序),那这时再调用 wx.getUserInfo 也是不会成功的,需要重新获得授权


相关开发文档参考:


▷ 小程序

1、小程序 wx.login

2、button 组件,并将 open-type 指定为 getUserInfo 类型,获取用户基本信息

3、open-data 展示用户基本信息


▷ 小游戏

1、小游戏 wx.login

2、用户信息按钮 UserInfoButton

3、开放数据域下的展示用户信息

62583浏览
最后一次编辑于  2018-08-17
知识库内容非实时更新,可能已过期、失效或不适用于当前情形,请谨慎参考
收藏
反馈

52 个评论

  • 2018-06-08

    用户体验的事情,该是什么样的体验,为什么需要微信去提替开发者考虑,你们是能力的提供方,提供能力给开发者,开发者怎么去调用,怎么给用户体验,是开发者考虑的事情,也是开发者理应有的自由,就这么生硬的去限制使用,未免太过霸道。

    2018-06-08
    赞同 1
    回复
  • ClotX
    ClotX
    2018-05-14

    用户分享 后的 逻辑想过吗~~~~~

    2018-05-14
    赞同 1
    回复
  • 2018-05-10

    如果是考虑用户体验的话,应该是开放所有的方式供开发者去选择吧,而不是微信强制开发者使用某种体验吧!开发者有自己的产品经理,有自己的团队,用户体验的问题,该用什么方式,用什么方式有好处用什么方式没好处,都会自己考虑,为什么要强制我们去使用某种体验呢?你们觉得最好的体验就是最好的体验?别人就必须用?

    2018-05-10
    赞同 1
    回复
  • chuck
    chuck
    2018-05-05

    想问一下,这个 open-data 的支持库是不是改了?我在测试的时候发现 wx.canIUse('open-data.userNickName')

    是 false,但是 open-data.userNickName是可以显示的


    。。。。。

    很懵逼啊

    2018-05-05
    赞同 1
    回复
  • 2018-05-04

    楼主好,不是说wx.getUserInfo()今后不让用了吗?为啥还要在这个文章中建议大家用这个函数呢?有点懵了。


    2018-05-04
    赞同 1
    回复
  • 高淑珍
    高淑珍
    2018-05-04

    我也觉得这么搞很不友好,要点两次,点一次button后,还要点次允许授权 

    2018-05-04
    赞同 1
    回复
  • 陈
    2018-05-03

    就没有人出来回复一下吗,这官方的帖子都没人管了吗,那发什么帖子,直接发个通知就OK了,禁止所有人评论

    2018-05-03
    赞同 1
    回复
  • 雨后桥前
    雨后桥前
    2018-05-02

    建议保留原来的接口,增加新的登陆能力,给开发者一个选择,更能够适合开发所需场景

    2018-05-02
    赞同 1
    回复
  • 咖啡兔
    咖啡兔
    2018-04-27

    首先,让用户进来点击登陆按钮才能弹出授权页面,给用户造成了操作累赘,个人觉得公众号已经多少年了,一直都是直接弹出询问用户是否同意授权,用户已经形成习惯了,现在又要改成通过点击按钮来询问用户是否同意授权,操作起来就麻烦,而且也不会解决官方说的,你是谁,我来自哪里。即便是不改成按钮操作,也完全可以达到文档说的要求,增加一个获取用户授权的说明页面而已,用户点同意后再跳到授权页面,弹出授权通知操作。
    如果说怕用户点击拒绝就造成流失或者造成用户无法享受到小程序的便利功能,只能说是开发的不够完善,完全可以在跳转功能页面后先检测用户是否登陆。况且就算加上这个按钮,又能解决什么根本性问题呢?希望官方能完善好接口,登陆机制重改不是轻松的

    2018-04-27
    赞同 1
    回复
  • Gavin
    Gavin
    2018-04-26

    那请问我就是要在首页登录并且需要获取用户信息存入数据库怎么办????

    2018-04-26
    赞同 1
    回复 3
    • 风度
      风度
      2018-07-09

      和我的需求一样

      2018-07-09
      回复
    • 半杯可乐°
      半杯可乐°
      2018-07-26回复风度

      可以考虑这样的方案解决:

      1. 小程序打开的第一个页面A,A这个页面只作为跳转使用‘页面资源加载中’

      2. 在A页面中进行相关判断,如果是新用户则跳转到登陆页面B,如果是已注册用户,并且登录态有效,则跳转到主页面C,否则跳转到登陆页面B。

      3. 登陆页面B上可以放注册按钮,注册按钮跳转到注册页面D,引导用户进行注册。也可以直接进行第4步。

      4. 在注册页面中显示type-data='getUserInfo'的按钮来获取用户信息,进行后面的业务处理。

      2018-07-26
      回复
    • 半杯可乐°
      半杯可乐°
      2018-07-26

      可以考虑这样的方案解决:

      1. 小程序打开的第一个页面A,A这个页面只作为跳转使用‘页面资源加载中’

      2. 在A页面中进行相关判断,如果是新用户则跳转到登陆页面B,如果是已注册用户,并且登录态有效,则跳转到主页面C,否则跳转到登陆页面B。

      3. 登陆页面B上可以放注册按钮,注册按钮跳转到注册页面D,引导用户进行注册。也可以直接进行第4步。

      4. 在注册页面中显示open-type='getUserInfo'的按钮来获取用户信息,进行后面的业务处理。

      2018-07-26
      回复

正在加载...

登录 后发表内容