添加同盾域名
小程序对各种请求接口都做了域名限制,所以需要在小程序网站后台页面中添加同盾域名才可以保证小程序能正常给同盾设备指纹服务器发送信息
在 设置-开发设置-服务器域名的 request 合法域名 中添加:
环境 | 域名 |
---|---|
生产环境(必须) | https://cn-fp.apitd.net |
小程序代码集成
1、插入canvas节点
同盾小程序设备指纹中使用了 canvas 指纹技术,需要在集成时手动加入。假设我们想在 index 页面中采集设备信息,那么就需要在 pages/index/index.jxml 文件末尾添加以下代码:
{
<view>
<canvas canvas-id='tdcanvas' style="visibility: hidden;position: fixed;z-index: -999;left: 9999px;"></canvas>
</view>
}
2、初始化js
在每一个需要获取设备信息的页面创建一个实例。比如:在pages/index/index.js中,先在文件顶部引用sdk:
import FMAgent from '../../fmsdk/fm-xxx-es.min.js'
配置FMAgent
partnerCode和appName为必要参数,如果没有传入则初始化时会抛出异常。
在app.js中:
App({
......
globalData: {
......
_fmOpt: {
partnerCode: "", // 请填入您的partner code
appName: "", // 请填入您的app name 同一个公司的不同小程序请填入不同的AppName
env: "PRODUCTION"
}
}
})
然后在page的onLoad回调中初始化对象:
// 示例
onLoad: function() {
var that = this
var fmagent = new FMAgent(app.globalData._fmOpt) // 这里需要传入一些必要配置
......
}
note:初始化成功可以在console里看到一条日志:
FMAgent: init succeeded.
3、获取blackbox
在设备指纹对象初始化完成后,就可以获取设备信息了。
fmagent.getInfo({
page: that, // that为当前页面对象
// 请传入加密的用户unionid(需保证加密后的unionid与原始unionid是一一对应关系)
unionid: '',
success: function (res) {},// 成功回调,res为blackbox字符串
fail: function (res) {},// 失败回调,res为各种exception对象
complete: function (res) {}
})
注意:在提交blackbox时,请选择表单提交,避免blackBox被urlEncode,导致查询结果异常
API参数说明
参数 | 类型 | 描述 | 示例 | 是否必填 |
---|---|---|---|---|
page | Object | 当前所在的page对象或component对象 | that | 是 |
unionid | string | 加密后的用户unionid(加密算法可以随意选择,我们建议使用MD5或者SHA256)(切记不可以传自定义默认值,没有值请传空字符串,否则会导致碰撞) | ef54040ea9cb5998230777ec7240b21e400a7ab5272af07a9ca2ed958fe66157 | 否 |
getInfoType | string | 获取blackbox的模式('1':优先使用缓存的blackbox,'2':优先使用实时采集的blackbox,'3':优先使用未过期的blackbox至过期,默认模式为'1') | '1' | 否 |
timeout | Integer | 获取blackbox超时(默认2500,包括采集和发送请求的总时长,范围:2500-16000) | 6000 | 否 |
success | function | 获取成功回调 | function(res) {/返回值为string类型,即black_box的值/} | 是 |
fail | function | 获取失败回调 | function(res) {/返回值为string类型,即black_box的值/} | 是 |
complete | function | 获取完成回调 | function(res) {/返回值为string类型,即black_box的值/} | 否 |
fail的原因可能为:
传入的timeout不是数字类型;
获取systemInfo错误,返回值为jd.getSystemInfoSync()的报错;
注意:
blackbox存在有效期,所以请不要自行对blackbox做缓存,在我们SDK内部有缓存机制,所以请在需要blackbox的地方,调用getInfo接口即可。