版本比较

标识

  • 该行被添加。
  • 该行被删除。
  • 格式已经改变。

...

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

  2. 自建应用内申请开通 编辑器 → 小程序环境授权(不推荐使用)/小程序环境集成(推荐使用),后续联系管理员审核通过。应用配置界面如下
    使用 小程序环境授权 (自建应用模块)

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

    或者使用 小程序环境集成 (自建应用模块)




  3. 配置好对应配置项,点击保存即可,小程序集成中,如果没有特殊的处理, 集成中间件js文件不用编写,可单独传空的js文件。配置好对应配置项,点击保存即可。

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

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

...

代码块
languagejs
themeMidnight
linenumberstrue
collapsetrue
vue下的前端加密
安装依赖:npm install crypto-js
代码示例:
/**
 * AES加密 
 * @param {string} secretKey 用于加密的key
 * @param {string} content 待加密明文字符串
 * @returns {string} 加密后的密文
 */
export function setTzEncrypt (content) {
        const secretKey = 'DpOGgKkq7-AFkKpUu5LsluM7acc'
        const key = crypto.SHA1(crypto.SHA1(secretKey)).toString().substring(0, 32)
        const newKey = crypto.enc.Hex.parse(key)
        const newContent = crypto.enc.Utf8.parse(content)
        const encrypted = crypto.AES.encrypt(newContent, newKey, { mode: crypto.mode.ECB, padding: crypto.pad.Pkcs7 })
        return encrypted.ciphertext.toString().toUpperCase()
}

const userInfo = {
        // 传入用户信息,包括昵称、头像、性别、省、市及其他自定义的用户信息
        wechatUserInfo: {
                nickname: "",
                headimgurl: "",
                sex: 0,
                city: "",
                province: "",
                country: "",
                // 必传字段,值为自建应用id,表明数据来源于某自建应用
                platform: app_id,
                customFields: [
                        { // 这里只是示例
                                fieldValue: ["手机号码值","项目编码值"],
                                fieldId: 123
                        }
                ] // 用户自定义字段,对象数组的形式,fieldValue为字符串数组类型,可传入多条数据,fieldId为工作台【用户】-【字段管理】中的 字段id(非 字段名称)
        },
        audienceUserInfo: {
                // 传入用户身份标识,使用key value形式传入,key为识别字段的类型(对应工作台-【用户】-【用户身份管理】中的用户身份id),value为对应值,如果需使用微信openid和unionid作为用户身份标识,也许按照此格式在此处传递
                // 如身份证,可传入"idCardNo":"xxxxxxxxxxxxxxx", 此处仅为举例,具体字段类型请根据接入方自身的用户身份识别标识传入
                // 如openid,可传入"openid": "xxxxxxxx", 此处仅为举例,具体字段类型请根据接入方自身的用户身份识别标识传入
                // 如third_userid,可传入"third_userid": "1234567890", 此处仅为举例,具体字段类型请根据接入方自身的用户身份识别标识传入
                // 身份类型标识,全局唯一用户ID标识建议用 third_userid 。自定义身份字段名需要优先在 兔展 用户-身份字段管理中新增配置后才能正常使用
                key: value,
        },
};

//  加密前,加密时需要通过JSON.stringify转换成字符串内容
setTzEncrypt(JSON.stringify(userInfo))

Java版AES(ECB)加密demo:

以下为Java版本的AES加密demo。

...

如果接入方使用非Java或Node.js语言作为服务端语言,请按照AES(ECB)标准自行实现(注意秘钥需使用自建应用的授权秘钥secretkey)。


url示例:https://v1.rabbitpre.com/m2/GDI1WDbMPRx?mp_userinfo=8CBE86C2990E5286864D61C05C0714B7ED7B3A6845EDB8964811CBB66FE77FCBE1A799B10C52112B5D14F81C31D1AA79500198CBB75254F1929C8148DA62520DDAC1A97CF150055752C0D6B63644F6E4DA2687200EE8E5E3A09B77E1A8229771AE3C248F3C9C30E3684DD163DACC71CB4570EADD5613D6EE51A511071900E44D80A5C3EA65083ABA26F5CD3E1D0273134616A7B5A96BF54CFE0E35C737938DA019330A5610FC735DC667112350DB3921F23E1309BE4F84FB652E6CB59BFC612A8632BA3F8C7CF49D1E7D44343AC9AEAAD10312A4275A75CAA38269CEDE898CB7&stopAuth=1&previewer=mp&app_id=lSDIeT7bYUf4xVdkwzgUxQp6QIs