自有账号体系和第三方账号系统打通是我们账户设计的一大核心模块,现在主流做法是要求手机号(实名制)必填,外加第三方便捷登录.而微信小程序比其他第三方平台多了一步,可以通过用户授权(会弹框)直接获取手机号,更方便开发者将用户微信账号和自有账户的绑定.
微信openID和unionID
要了解小程序的账号体系,必须要弄清楚openID和unionID的含义和机制.
- openID,是微信用户在整个微信平台的唯一标记,但是同一用户,对不同公众号来说openID是不一样的,可以通过wx.login(静默)直接获得
- unionID是同一公告主体下(公众号,小程序,开放平台)用户的唯一标记,同一用户对同一公共主体来说,unionID是一样的,当小程序迁移主体,其unionID会随之变化.
- unionID可以通过以下3种方式获得:
a.可以通过wx.getUserInfo中,通过解密算法获取unionID
b.如果用户关注过同一主体的公众号,则可以通过wx.login接口获得
c.如果用户授权过同一主体的公众号或者移动应用登录,则也可以通过wx.login接口获得.
open-data的数据,不用授权,开发者可以在页面直接展示这些信息,但这些数据是以组件的形式获得,开发者只能展示,无法直接获取里面的值.
![](https://img.haomeiwen.com/i2083649/8544bb4f6522a3bc.png)
获取用户信息wx.getUserInfo
![](https://img.haomeiwen.com/i2083649/6e3385bdfa5b8ac5.png)
通过api请求wx.getUserInfo,不再弹框显示,必须通过按钮的形式,让用户点击按钮弹框授权.
![](https://img.haomeiwen.com/i2083649/7c912b107e459520.png)
wx.getUserInfo使用注意:
- 使用getUserInfo前必须弹框授权过一次.
- 如果用户在设置中关闭了”用户信息”授权,必须让用户重新点击授权按钮,重新弹框授权.
- 在进入页面生命周期方法中或者其他方法回调中调用wx.getUserInfo是不会弹框的,从其他按钮中点击直接调用该方法是会弹框请求授权.
小程序登录和自有账号打通
小程序授权登录,目前可以更进一步拿到用户手机号,而我们的账号体系是以手机号为主,所以我据此优化了登录流程,其他第三方登录(微博,支付宝)只要替换微信的unionID也可以使用该流程.
![](https://img.haomeiwen.com/i2083649/b4a6f870555db877.png)
网友评论