收藏
评论

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

为了优化用户的使用体验,平台将回收“使用 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
收藏

110 个评论

  • 2018-09-12

    wx.getUserInfo虽然没有弹窗,但还是可以用来获取用户信息吧??

    2018-09-12
    赞同
    回复
  • 不难
    不难
    2018-09-12

    可不可以把按钮的默认样式之类的东西去掉

    2018-09-12
    赞同
    回复 1
    • 沁塵
      沁塵
      2018-09-12

      覆盖原生组件css样式就可以实现了

      2018-09-12
      回复
  • 今夏
    今夏
    2018-09-12

    那getUserInfo 在首次调用时是会走失败是吗?授权成功后再次调用呢

    2018-09-12
    赞同
    回复
  • 星之所在
    星之所在
    2018-09-12

    测试的时候能不能也弄个授权弹窗出来

    2018-09-12
    赞同
    回复
  • 2018-09-12

    我的建议是能不用getUserInfo的地方尽量不用,可以用open-data替代,从而不需要授权。例如获取头像,昵称等信息,如果后台不需要存储这些数据,就使用open-data(如果应用不需要展示其他好友的头像、昵称,后台就可以不存储这些数  据)。

     同时,为了区分用户,只需通过wx.login()来获取openId,作为用户ID给后台存储就行了(需要用到Unionid的除外),这种情况也不需要授权。

    2018-09-12
    赞同
    回复 1
    • 萧遥彬
      萧遥彬
      2019-01-12

      系统就用一次,把头像和昵称这些存到库里,getUserInfo就是类似注册了,后期有openid,只要不用到Unionid,都用不着getUserInfo,有openid就能把头像昵称找出来,只是用户修改了头像这些没办法同步更新

      2019-01-12
      回复
  • 拖鞋
    拖鞋
    2018-09-12

    麻烦开始了 那个登陆button怎么居中???只有top跟left

    2018-09-12
    赞同
    回复
  • 烦躁的时候,就数数兜里的毛爷爷
    烦躁的时候,就数数兜里的毛爷爷
    2018-09-12

    你这吓我一跳!!!

    2018-09-12
    赞同
    回复
  • 2587
    2587
    2018-09-12

    这样我要改好多东西。。。。。醉了

    2018-09-12
    赞同
    回复
  • 沉默🍎是 金
    沉默🍎是 金
    2018-09-09

    还是不会使用!

    2018-09-09
    赞同
    回复
  • 🚗🚕🚙🚌🚎🚒🚐🚚
    🚗🚕🚙🚌🚎🚒🚐🚚
    2018-09-07

    还是有点不明白,在组件点击事件里调用wx.getUserInfo行不行?,既然说是回收,那旧用户又是怎么回事

    2018-09-07
    赞同
    回复 5
    • 昆仑🕔
      昆仑🕔
      2018-09-07

      旧用户应该指的在自己服务器上已经存储了用户信息的情况

      2018-09-07
      1
      回复
    • KarmenTse休假中
      KarmenTse休假中
      2018-09-10

      楼上正解!指的是当前用户之前已经授权登录过小程序了,就不需要再引导登录了。

      2018-09-10
      1
      回复
    • 陈
      2018-09-12回复KarmenTse休假中

      一进来论坛,帖子的旁边就是官方的帖子,但是很难让人注意到是否有更新,有新的帖子只是多了个红点,很容易让人忽略,特别是这种比较重要的帖子,1000多的浏览量怎么搞的。要么就置顶,要么就突出显示,你这样搞的毫无存在的意义啊

      2018-09-12
      3
      回复
    • Heng
      Heng
      2018-09-12

      授权是可以删除的啊,删除小程序后授权就清掉了,那再次进入不又是“新用户”了?

      2018-09-12
      回复
    • Grace Leeau
      Grace Leeau
      2018-09-13回复KarmenTse休假中

      问过后端同事了,凭 wx.login 获得的code, 他无法告诉我是新用户还是旧用户;小程序这边不能提供查询用户是否已经授权的API吗,这样才是比较合理的,如果已授权,就不必再让用户进入点击按钮授权的页面了;另外,数据库里有该用户了,也不等同于用户不需要再次授权小程序了,因为这期间可能把小程序删了,那你说需不需要再次授权呢?

      2018-09-13
      回复

正在加载...

登录 后发表内容