FinClip为企业提供小程序生态圈技术产品,开发者可在FinClip小程序开发帮助中心找到相关FinClip小程序指引

# 统一登录说明

为了减少小程序生态合作伙伴,同时上架到多个 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"
      }
  }

# 登录

  1. 小程序调用 wx.login 插件会自动拦截返回加密 code
  2. login 接口 success 回调返回 codeappidapiserver
  3. 业务服务调用以下小程序服务接口获取用户 openIdunionId

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"
}

# 手机号

  1. 小程序 button 组件 open-type=getPhoneNumber 并设置 bindgetphonenumber 事件,点击 button 组件返回加密 code
  2. bindgetphonenumber 事件触发返回 codeappidapiserver
  3. 业务服务调用以下小程序服务接口获取用户的手机号

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"
}
© FinClip with ❤ , Since 2017