收藏
评论

小程序微信登录能力调整官方

为了优化用户的使用体验,平台将回收“使用 wx.getUserInfo 接口直接弹出授权框”以及“使用 wx.authorize 接口直接申请提前授权用户信息”的能力,开发者需要使用组件方式唤起登录授权弹窗。

2018年10月10日后发布新版本的小程序,将无法在线上版本中使用接口直接弹出授权框。开发者可结合平台设计建议,提前做好兼容,合理使用微信登录能力。


  1. 能力调整背景

  2. 怎么合理使用微信登录能力

  3. 小程序登录流程设计建议

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. 不强制用户必须登录后才能使用小程序服务

提供游客模式,不强制用户必须登录后才能进入小程序。如要求必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。






最后一次编辑于  2018-12-29
收藏

106 个评论

  • Benjamin
    Benjamin
    2018-11-06

    请问wx.authorize()这个接口也无法弹出提示框了么?


    2018-11-06
    赞同
    回复
  • 林雄威
    林雄威
    2018-11-01

    现在必须通过button才能获取用户头像昵称存数据库,那如果用户更换了头像昵称,那是不是得重新授权才能拿最新信息?

    2018-11-01
    赞同
    回复
  • 阿劣
    阿劣
    2018-10-30

    尼玛,小程序体验版从button能获得encrypteddata,到线上发布后敏感数据又没有返回,返工使用 wx.getUserInfo 才得到。把体验版返回的敏感数据去掉,行吗,求求你们了。

    2018-10-30
    赞同
    回复
  • nigel
    nigel
    2018-10-23

    这个功能好

    2018-10-23
    赞同
    回复
  • 树下有只猫
    树下有只猫
    2018-10-22

    程序猿何苦难为程序猿

    2018-10-22
    赞同
    回复
  • 冰渊
    冰渊
    2018-10-17

    求解决代码,配置半天了搞不出满意的

    2018-10-17
    赞同
    回复
  • 熊
    2018-10-16

    小游戏呢?怎么授权登录?小游戏就一个 canvas,怎么在页面上放上一个   <button open-type="getUserInfo"></button> 按钮呢??求解??!!


    2018-10-16
    赞同
    回复 1
  • 老陶
    老陶
    2018-10-14

    好多小程序一定要获取授权才能使用,遇到这样的小程序,我基本是拒绝授权。我自己写的小程序就是遵循现有的原则,点击按钮才触发登录界面。

    你的商品没有看到,我为何要给你看到我有多少的购买能力。这是一样的道理。

    安全才是最主要的,难道大家没有被那么多的垃圾电话骚扰吗?

    2018-10-14
    赞同
    回复 1
    • 后米米米米
      后米米米米
      2018-11-09

       说实在的手机号码可以授权,getUserInfo返回的是头像,昵称这种东西。我告诉你我的头像和昵称。。。你觉得这数据有用?

      2018-11-09
      1
      回复
  • 青山奇侠
    青山奇侠
    2018-10-14

    我是新手,我不说话!

    2018-10-14
    赞同
    回复
  • 永强
    永强
    2018-10-09

    我的应用需要解密用户手机号,时不时会有解密失败,特来求教。

    1. session_key用于手机号解密,获取session_key需要用wx.login返回的code。

    2. code有消息只有5分钟,意味着code只能即时取即时消费。但是调用wx.login()时,用户的session_key可能会被更新而致使旧session_key失效,进而导致手机号解密失败。

    求解决方案,谢谢各位大大 🙏🙏🙏


    2018-10-09
    赞同
    回复 2
    • 后米米米米
      后米米米米
      2018-11-09

       验证session_key啊,有效就直接拿session_key去解密,没用就重新调用wx.login()获取code再获取session_key,这有什么难的。。

      2018-11-09
      回复
    • 永强
      永强
      2018-11-27

      新的session_key是无法解密手机号的

      2018-11-27
      回复

正在加载...

登录 后发表内容