跳到主要内容

UNIAPP统一注册登录架构

注:此架构针对uniapp有效,不影响原程序。

总体思路

要求运营者把小程序、公众号、app都绑定到同一个微信开放平台,以实现unionid一致

1、获取微信unionid实现自动注册和登录

2、微信小程序、微信H5不提供手动注册和登录

3、pc、h5、app提供手动注册登录

4、登录后点击绑定手机号,进行手机号绑定

关于token的有效期

1、h5和pc有效期不变

2、小程序/app固定为3个月

通过unionid的自动注册、登录流程

小程序自动登录

一、用户点击登录,开始调用wx.login获取到code

二、通过code请求自动登录API

1、首先通过微信api拿到 session_key和openid

2、将openid和sessioin_key绑定,存储在redis中。

三、如果上述操作成功,则开始调用wx.getUserinfo获取unionid

1、wx.getUserinfo获取到加密数据

2、讲加密数据传递到api进行解密

3、解密出unionid后用unionid进行自动登录

相关文档

小程序登录

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

小程序获取unioid

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html

小程序获取手机号

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

微信H5自动登录

一、点击登录,向javashop api请求获取微信授权跳转链接

因为前段没有appid,所以由后端拼接链接

二、授权后前段得到微信code

三、前端用code请求javashop api自动登录

1、后端api通过code拿到openid和微信token

2、通过微信token 拿到微信unionid

3、通过unionid注册登录,生成javashop token

相关文档

微信授权

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

获取access_token及unionid:

https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId

公用模块

通过unionid自动登录应该是一个公用的方法:

调用伪代码:


String unionId="xxxx";

MemberVo member = loginByUnionId(unionId);

实现伪代码:

MemberVo loginByUnionId(String unionId){
//通过unionid查找会员(es_connect表)
Integer memberId= findMemberByUnionId(unionId)
MemberVo member=null;
if(memberId==null){ //没找到注册一个
member= registerBy(UnionId);
}else{
member= findMemberById(unionid);
}
}

会员的填充规则要求用户名保持唯一性,其他的随机生成即可

APP自动登录

因为采用uniapp的统一Login api,所以和小程序一样

相关文档

登录授权

https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Development_Guide.html

unionid获取

https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_Login/Authorized_API_call_UnionID.html

相关表结构

es_connect表

此表为已存在的表

列名类型说明
idbigint主键
member_idbigint会员id
union_idvarcharunionid
union_typevarchar联合登录类型
unbound_timebigint解绑时间

union_type规则

说明
WECHAT微信unionid
WECHAT_OPENID微信openid
WECHAT_MINI微信小程序openid
QQqq联合登录凭证id
WEIBO微博联合登录凭证id
ALIPAY支付宝联合登录凭证id

uniapp相应文档

https://uniapp.dcloud.io/api/plugins/login?id=login

相关配置