# 统一登录说明
为了减少小程序生态合作伙伴,同时上架到多个 APP 的登录问题,凡泰提供了一套能够适配的小程序登录方案
宿主 APP 注入用户唯一身份标识,设定其渠道名称, 小程序通过集成插件,即可通过 wx.login 获取到 code 到小程序平台进行解密,即可获取到 渠道 channel 用户唯一 id openId 用户全局 id unionId 可选
# 宿主 APP 接入
# iOS
仅需要在初始化SDK时,在FATConfig中配置currentUserId、channel、phone即可。(需要升级至2.45.1版本)
示例代码:
FATConfig *config = [FATConfig configWithStoreConfigs:storeArrayM];
config.currentUserId = @"xxxx";
config.channel = @"finclip";
config.phone = @"appid";
# 安卓
仅需要在初始化SDK时,在FATConfig中配置currentUserId、channel、phone即可。(需要升级至2.45.1版本)
示例代码:
val config = FinAppConfig.Builder()
.setUserId("xxxx")
.setChannel("finclip")
.setPhone("12345678901")
.build()
# 鸿蒙
仅需要在初始化SDK时,在 FinAppConfig 中配置currentUserId、channel、phone即可。(需要升级至1.0.2版本)
示例代码:
const finAppConfig: IFinAppConfig.IFinAppConfig = {
// ...
phone: '12345678901',
currentUserId: 'xxxx',
channel: 'finclip'
}
# uniapp
登录集成
仅需要在初始化插件SDK(集成插件文档)时,在options中配置userId、channel、phone即可。(更新最新版插件(github/gitee下载),及依赖最新核心SDK2.45.5版本)
示例代码:
MopSdk.initialize({
finStoreConfigs:[
{'sdkKey': 'xxxxxx',
'sdkSecret': 'xxx',
'apiServer': 'https://xxx.com'}]},
userId: 'xxxx',
channel: 'finclip',
phone: '135xxxxxxx',
(ret) => {
console.log('App Launch Success', ret)
},
(ret) =>{
console.log('App Launch Fail', ret)
});
灰度发布 灰度发布设置上报灰度匹配值文档中心
//如需要进行性别/年龄匹配,可以按以下信息上报
const options = [{key: 'sex',value: '男'},{key: 'age',value: 18 }]
MopSdk.setGrayAppletVersionConfigs(options)
注意:为了确保FATConfig中的currentUserId、phone等配置能正常注入,在打开小程序时,请APP先校验是否登录,然后再打开小程序(若配置注入失败,小程序调用wx.login方法会触发fail回调,执行bindgetphonenumber事件回调时返回值中将只有错误信息)
# IDE 接入
需要在“全局字段配置”里面配置userId、channel、phone这几个信息。

# 小程序接入
小程序demo:
login-demo.zip (opens new window)
# app.json 配置插件
"plugins":{
"loginPlugins": {
"version": "1.0.6",
"provider": "2275269218722181"
},
"getPhoneNumberPlugins": {
"version": "1.0.4",
"provider": "2275270855598469"
}
}
# 登录
- 小程序调用
wx.login插件会自动拦截返回加密code login接口success回调返回code、appid、apiserver- 业务服务调用以下小程序服务接口获取用户
openId和unionId
POST {小程序服务器 apiserver}/api/v1/open/dev/mini-apps/unified-auth/login
请求参数
参数位置: header
| 字段 | 类型 | 含义 | 备注 |
|---|---|---|---|
| Authorization | string | Bearer {personalAccessToken} | personalAccessToken 在开发中心的个人中心生成。请确保勾选了「小程序统一认证」的scope |
参数位置: body
| 字段 | 类型 | 含义 |
|---|---|---|
| appId | string | 小程序id |
| code | string |
返回参数
| 字段 | 二级字段 | 类型 | 含义 |
|---|---|---|---|
| data | channel | string | 渠道 |
| openId | string | 用户唯一id | |
| unionId | string | 用户全局id | |
| errcode | |||
| error |
最终请求示例
POST {小程序服务器 apiserver}/api/v1/open/dev/mini-apps/unified-auth/login
Body application/json
{
"appId":"fc2183741419665349",
"code":"1drac2l7scWpTtetZtF4tA02llZegeLbJSxTYTUG6MmjBA2L3xewOk7IjSqY72ZNDsvWKU0r2EdLKcLqS82g0EKnDgE0uSu1REmvFpPIF8Y="
}
Response
{
"error": "",
"errcode": "OK",
"data": {
"channel": "com.finogeeks.finosprite",
"openId": "2279547539610117",
"unionId": "5110c76fbc1c8ebc7429e906b83c1f7f",
"accessToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImNlcnQtYnVpbHQtaW4iLCJ0eXAiOiJKV1QifQ.eyJvd25lciI6ImNvbS5maW5vZ2Vla3MuZmlub3Nwcml0ZSIsIm5hbWUiOiIyMjc5NTQ3NTM5NjEwMTE4IiwiY3JlYXRlZFRpbWUiOiIyMDI0LTA3LTE4IDEwOjE1OjQyIiwidXBkYXRlZFRpbWUiOiIyMDI0LTA3LTE4IDEwOjE1OjQyIiwiaWQiOiIyMjc5NTQ3NTM5NjEwMTE4IiwidHlwZSI6Im5vcm1hbC11c2VyIiwicGFzc3dvcmQiOiIiLCJwYXNzd29yZFNhbHQiOiIiLCJkaXNwbGF5TmFtZSI6IiIsImZpcnN0TmFtZSI6IiIsImxhc3ROYW1lIjoiIiwiYXZhdGFyIjoiIiwicGVybWFuZW50QXZhdGFyIjoiIiwiZW1haWwiOiIiLCJlbWFpbFZlcmlmaWVkIjpmYWxzZSwicGhvbmUiOiIiLCJsb2NhdGlvbiI6IiIsImFkZHJlc3MiOltdLCJhZmZpbGlhdGlvbiI6IiIsInRpdGxlIjoiIiwiaWRDYXJkVHlwZSI6IiIsImlkQ2FyZCI6IiIsImhvbWVwYWdlIjoiIiwiYmlvIjoiIiwicmVnaW9uIjoiIiwibGFuZ3VhZ2UiOiIiLCJnZW5kZXIiOiIiLCJiaXJ0aGRheSI6IiIsImVkdWNhdGlvbiI6IiIsInNjb3JlIjowLCJrYXJtYSI6MCwicmFua2luZyI6NCwiaXNEZWZhdWx0QXZhdGFyIjpmYWxzZSwiaXNPbmxpbmUiOmZhbHNlLCJpc0FkbWluIjpmYWxzZSwiaXNHbG9iYWxBZG1pbiI6ZmFsc2UsImlzRm9yYmlkZGVuIjpmYWxzZSwiaXNEZWxldGVkIjpmYWxzZSwic2lnbnVwQXBwbGljYXRpb24iOiJjb20uZmlub2dlZWtzLmZpbm9zcHJpdGVfZmMyMTgzNzQxNDE5NjY1MzQ5IiwiaGFzaCI6IiIsInByZUhhc2giOiIiLCJjcmVhdGVkSXAiOiIiLCJsYXN0U2lnbmluVGltZSI6IiIsImxhc3RTaWduaW5JcCI6IiIsImxkYXAiOiIiLCJwcm9wZXJ0aWVzIjp7fSwicm9sZXMiOltdLCJwZXJtaXNzaW9ucyI6W10sImxhc3RTaWduaW5Xcm9uZ1RpbWUiOiIiLCJzaWduaW5Xcm9uZ1RpbWVzIjowLCJ0b2tlblR5cGUiOiJhY2Nlc3MtdG9rZW4iLCJzY29wZSI6InByb2ZpbGUiLCJpc3MiOiJodHRwczovL2lhbS1tYW5hZ2VyOjgwMDAiLCJzdWIiOiIyMjc5NTQ3NTM5NjEwMTE4IiwiYXVkIjpbImU0ZDcwY2FmNDExZWY4YjU2YzRkIl0sImV4cCI6MTcyMTg3Mzc0MiwibmJmIjoxNzIxMjY4OTQyLCJpYXQiOjE3MjEyNjg5NDIsImp0aSI6ImFkbWluLzMxYzEzYzM0LThhZjUtNDYzYS05OGQwLTY0ZGEwNWY2NDViMiJ9.WCjVGoF55xeBQLXs7D0gHwHbif92_Zfc7pNtToAytiwtBpKfPAIzVUKh4w4xNtzCVNW0ov1ajNBNlP-qmDgd-jAgN_0HETPi3q_kYT4gc5Nh-iBCeXgHxXfBAl3is7J6999RAUVPyoM0T-CbU6A-opIGyXYYc1giCfta53rcMlM2PNYudquoCy9oyWjzriATWElQARP3lDHARJA_mRMoufVUgm92q5xq8Dw4gnpGKHSmweNhEqrjSj78jMz2_eeXMxfX1f2t-1asV4RahFVOZSSYLGcuFf44oK4GPMfzhOwwTIH4sqmNlsHIor8aT0DUFUU5HW3nMKDM3shl0zsnlgQT5-YdxhaYElLMjSOpY4pscwn6pdaGb9yYwkTommE_RxysmpXfA6TPuTg14_rNXQXxcJ1eDG4BjjHP9dp1Vk66AmUVnNbLZCheFioG1IsXIjaXnUUSxwyUCZRHL3GFrPbcwiyqmWwwgOLZfYetQTUO3MPJOY52eR0zS_-fWwGcHBf2SMZMb7Daz9w7u_fOL-FU1T57MvF97cEB3zx9o4GHIjd7K1gUX0UnvAvQsYUG2A6iJu9C2KziCDFH30q1rxCqrG35ZkwsKoYh1PHBu1ej-T1h9oRUFjzlO83N7LPR3KsQKCcgpkkchUje4pg2iD9-UDRoKsOuwn02qf1dlk0"
},
"traceid": "4fccb7b175cc401690235e4a400bb363"
}
# 手机号
- 小程序
button组件open-type=getPhoneNumber并设置bindgetphonenumber事件,点击button组件返回加密code bindgetphonenumber事件触发返回code、appid、apiserver- 业务服务调用以下小程序服务接口获取用户的手机号
POST {小程序服务器 apiserver }/api/v1/open/dev/mini-apps/unified-auth/phone/get
请求参数
参数位置: header
| 字段 | 类型 | 含义 | 备注 |
|---|---|---|---|
| Authorization | string | Bearer {personalAccessToken} | personalAccessToken 在开发中心的个人中心生成。请确保勾选了「小程序统一认证」的scope |
参数位置: body
| 字段 | 类型 | 含义 |
|---|---|---|
| appId | string | 小程序id |
| code | string |
返回参数
| 字段 | 二级字段 | 类型 | 含义 |
|---|---|---|---|
| data | phone | string | 手机号 |
| errcode | |||
| error |
最终请求示例
POST {小程序服务器 apiserver}/api/v1/open/dev/mini-apps/unified-auth/phone/get
Body application/json
{
"appId":"fc2183741419665349",
"code":"1drac2l7scWpTtetZtF4tA02llZegeLbJSxTYTUG6MmjBA2L3xewOk7IjSqY72ZNDsvWKU0r2EdLKcLqS82g0EKnDgE0uSu1REmvFpPIF8Y="
}
Response
{
"error": "",
"errcode": "OK",
"data": {
"phone": "13333333333"
},
"traceid": "8a272339cf6f4e72bec6efa3a11a42e7"
}