背景说明:

为支持C端用户可以在不同环境正常登录到兔展提供的H5页面,兔展内容中台提供了多种解决用户授权的方案。

目录:

  • 微信H5环境打开——公众号授权
  • 微信H5环境打开——URL传入客户档案
  • 小程序环境打开——URL传入客户档案
  • APP环境打开——通过SDK传入客户档案

功能详情:

一、微信H5环境打开——公众号授权

在兔展工作台授权公众号(服务号):

在发布作品前选择授权公众号:

授权拉起效果:

获取授权信息后,当前用户信息会在兔展环境进行落库:


二、微信H5环境打开——URL传入客户档案

使用方法:

  1. 作品链接上加previewer=mp和userInfo这两个参数;
  2. 在userInfo参数中传入平台标识和身份信息;


previewer字段说明

表明访问环境,支持的参数值有:mp、app。

  1. 当参数值为mp,表示小程序环境
  2. 当参数值为app,表示App环境

用户务必留意自己活动投放的环境。


userInfo字段说明

字段

类型

描述

userInfo

object

身份信息

identitys

object[]

多组身份信息 ,最大支持5组身份信息

identityType

string

身份类型:openid=微信环境下的openid、unionid=微信环境下的unionid,fans_id=有赞商城识别id,支持自定义类型标识

identityValue

string

身份类型对应的id取值

appid

mpidstring微信公众号appid或小程序appid或自建应用id等

platform

string

平台标识,公众号/小程序(gzh)、自建应用(external)

isWeChatEcosystemboolean是否微信生态,true是 false否

说明:identitys必需且至少一组身份数据,否则建档失败。identityType的取值为“工作台”->“用户”->“用户身份管理”中的”用户身份id“配置

数据结构:

{
    "userInfo":{
        "identitys":[
            {
                "identityType":"openid",
                "identityValue":"openid-xxxx-xxxxx-xxxxx-xxxxx",
                "mpid":"wxappid",
                "platform":"gzh",
                "isWeChatEcosystem":true
            },
            {
                "identityType":"unionid",
                "identityValue":"unionid-xxxx-xxxxx-xxxxx-xxxxx",
                "mpid":"wxappid",
                "platform":"gzh",
                "isWeChatEcosystem":true
            },
            {
                "identityType":"memberNo",
                "identityValue":"member-no-xxxx-xxxxx-xxxxx-xxxxx",
                "mpid":"应用id",
                "isWeChatEcosystem":false
            },
            {
                "identityType":"phone",
                "identityValue":"188xxxxxxxx"
            }
        ]
    }
}

如果有其它的用户信息,也可以附加在userInfo内进行上报,例如预设的头像(headimgurl)、昵称(nickname)、性别(sex)等。

customFields为用户信息扩展字段,以对象数组的形式支持传入多条数据,其中fieldValue为字符串数组类型,可传入多条数据,fieldId为“工作台->“用户”→“字段管理”中的”字段id“的配置

{
    "userInfo":{
        "identitys":[
            {
                "identityType":"openid",
                "identityValue":"openid-xxxx-xxxxx-xxxxx-xxxxx",
                "mpid":"wxappid",
                "platform":"gzh",
                "isWeChatEcosystem":true
            },
            {
                "identityType":"unionid",
                "identityValue":"unionid-xxxx-xxxxx-xxxxx-xxxxx",
                "mpid":"wxappid",
                "platform":"gzh",
                "isWeChatEcosystem":true
            },
            {
                "identityType":"memberNo",
                "identityValue":"member-no-xxxx-xxxxx-xxxxx-xxxxx",
                "mpid":"应用id",
                "isWeChatEcosystem":false
            },
            {
                "identityType":"phone",
                "identityValue":"188xxxxxxxx"
            }
        ],
        "nickname": "xxxx",
        "headimgurl": "xxxx",
        "sex": "0",
        "customFields": [
      {
        "fieldValue": ["",""],
        "fieldId": ""
      },
    ]
    }
}

url地址带参示范

'https://作品链接地址?previewer=mp&userInfo='+encodeURIComponent(JSON.stringify({"identitys":[{"identityType":"openid","identityValue":"openid-xxxx-xxxxx-xxxxx-xxxxx",
"mpid":"wxappid","isWeChatEcosystem":true},{"identityType":"unionid","identityValue":"unionid-xxxx-xxxxx-xxxxx-xxxxx","mpid":"wxappid","isWeChatEcosystem":true},
{"identityType":"memberNo","identityValue":"member-no-xxxx-xxxxx-xxxxx-xxxxx","mpid":"intanceAppid","isWeChatEcosystem":false},{"identityType":"phone","identityValue":"188xxxxxxxx"}]}));

访问转换后url地址,验证上报参数



  • 注意:

1、identitys是识别用户的标识,比如身份证号、手机号、会员卡号等;而customFields传入的是用户的属性,如职业、行业、岗位等,这些数据在校验通过后,都会落库存储。

2、若只需要在url中透传,无需持久化到兔展侧进行存储,则可以通过拼接extField参数来实现。

拼接 extField 的字段值时 需要对字段值进行一次转义操作 encodeURIComponent (JSON.stringify(第三方要传入的对象值))
示例:

// 第三方要传入的对象值
const value = {tenantId: "00010", campaignId: "999"
 
// 进行转义操作
const extFieldValue = encodeURIComponent(JSON.stringify(value))
// 此时 extFieldValue 转义后为 '%7B%22tenantId%22%3A%2200010%22%2C%22campaignId%22%3A%22999%22%7D'
// 赋值到兔展的H5作品链接 extField 上
// www.rabbitpre.com/m2/a1b1ZictHX?extField=%7B%22tenantId%22%3A%2200010%22%2C%22campaignId%22%3A%22999%22%7D&appid=123456789

三、小程序环境打开——URL传入客户档案

我需要准备什么?

  1. 本授权功能需接入方企业先在兔展营销云开通 “数据集成” 模块,并获得 “自建应用” 的使用权限。

  2. 自建应用内申请开通 编辑器 → 小程序授权,后续联系管理员审核通过。应用配置界面如下

    此处标记的应用id、授权秘钥请务必妥善保管,需要用于授权信息的加密、解密等操作。

  3. 配置好对应配置项授权appid,授权页路径,点击保存即可。

  4. 为数据安全起见,用户信息mp_userinfo必须使用AES方式进行加密(加密方式见下文),此授权方式不接受任何明文方式传入。

  5. 如果接入方采用接入方式二(见下方授权流程介绍),除接入方需自行实现小程序授权页面外,还需在兔展活动编辑器内为作品添加登录授权按钮,具体配置如下


授权流程介绍:

小程序webview加载兔展作品时候携带加密后的(加密方式见下文)用户信息参数:mp_userinfo & app_id(详见参数说明表)方可自动授权。

注意:为防止作品本身发生默认的公众号授权,除字段 mp_userinfo & app_id 外任何时候都必须要传递 stopAuth=1 以及 previewer=mp 来阻止默认的公众号授权以及标明此作品访问环境为小程序

两种接入方式:

  1. 接入方小程序webview加载兔展作品时在作品链接上直接传入对应授权所需信息字段进行授权。
    优点:类似微信的静默授权,用户无感知。
    缺点:用户的登录状态需接入方自行管理。

  2. C端用户点击作品内部的授权按钮,嵌套在小程序webview的作品会跳转小程序原生授权页(自建应用内 “小程序授权” 配置的授权页路径),并携带参数:redirect_url & app_id(详见参数说明表)进入第三方自行实现的授权页,当授权结束后,小程序需重定向回先前传递的redirect_url(作品地址),并携带加密后的用户信息参数mp_userinfo & app_id 注意别忘记携带 stopAuth=1&previewer=mp 来阻止默认授权行为
    优点:可以在不登录的情况下,通过用户行为主动发起登录授权。
    缺点:需要接入方开发授权页。

参数说明表:

参数

类型

说明

redirect_url
string
当前H5页面地址,包含已有的其他字段
app_id
string
自建应用id

mp_userinfo

string加密后的用户信息
stopAuthstring停止公众号授权(此处永远指定为1
previewerstring标明访问环境为小程序(此处永远指定为mp


*文档地址:小程序环境授权

三、APP序环境打开——通过SDK传入客户档案

我需要准备什么?

  1. 本授权功能需接入方企业先在兔展营销云开通 “数据集成” 模块,并获得 “自建应用” 的使用权限。

  2. 自建应用内申请开通 编辑器 → APP环境集成,后续联系管理员审核通过。应用配置界面如下:



    注意:应用权限必须配置UA识别符,作品内会先获取浏览器UA再匹配设置好的识别符,如果匹配到才能识别为App环境
    例如某App中WebView有特殊标识符xxxApp,是属于接入方App自定义的标识性字符,此时识别User-Agent栏目填入“xxxApp”即可,无需填写完整的UA

  3. 配置好UA后,上传授权SDK(详见示例代码部分),点击保存即可。

  4. 进入兔展活动编辑器,点击右上角“预览与设置”打开作品设置页面进行配置,配置如下:

授权流程

用户进入活动作品的时候,先会触发鉴权逻辑,检测自建应用是否在有效期内等,如果通过则走授权流程,确保自建应用为有效状态。

App环境授权第三方规范

标准协议如表格所示,第三方需按此表格中的协议实现JS SDK代码包,兔展活动页面会在合适的时机来主动调用,JS SDK命名空间固定为:AppAuthorization

方法名方法描述入参返回值
isLogin检测用户是否已在App内登录true|false,当isLogin()方法返回为false未登录,则自动跳转到app登录页进行登录(此处由接入方SDK内实现)
getUserInfo获取App内登录用户的详细用户信息


{
  "identitys": [
    {
      "identityType": "", // 身份类型,如idCardNo、userId、phoneNumber等
      "identityValue": "" // 类型值
    },
    {
      "identityType": "",
      "identityValue": ""
    },
    {
      "identityType": "",
      "identityValue": ""
    }
  ], // 多组身份信息 ,最大支持3组身份信息
  "customFields": [
    {
	  "fieldValue": ["",""],
	  "fieldId": ""
	}
  ], // 用户自定义字段,对象数组的形式,fieldValue为字符串数组类型,可传入多条数据,fieldId为工作台客户自定义字段的id
  "platform": "自建应用id", // 自建应用的应用id
  "userName": "用户名称", // 可选字段
  "avatar": "用户头像", // 可选字段
  "sex": "性别" // 可选字段 值为 1 时是男性,值为 2 时是女性,值为 0 时是未知
}




















  • 无标签