小程序对各种请求接口都做了域名限制,所以需要在小程序网站后台页面中添加同盾域名才可以保证小程序能正常给同盾设备指纹服务器发送信息
在 设置-开发设置-服务器域名 的 request 合法域名中添加:
注意:
同盾小程序设备指纹中使用了 canvas 指纹技术,由于目前小程序的限制,我们无法通过 JS 来动态创建 DOM 节点,所以需要在集成时手动加入。假设我们想在 index 页面中采集设备信息,那么就需要在 pages/index/index.ttml 文件末尾添加以下代码:
<view>
<canvas canvas-id='tdcanvas' style={{ visibility: "hidden", position: "fixed", zIndex: "-999", left: "9999px" }}></canvas>
</view>注意:
canvas-id,修改会导致 SDK 无法正常工作我们的设备指纹对象存活在一个 Page(或 Component)的生命周期中,所以在每一个需要获取设备信息的页面都需要创建一个实例。比如:在 pages/index/index.js 中,先在文件顶部引用 SDK 文件:
import FMAgent from '../../fmsdk/fm-xxx-es.saas.js'然后在 Page 的 onLoad 回调中初始化对象:
onLoad: function() {
var that = this
var fmagent = new FMAgent(app.globalData._fmOpt) // 这里需要传入一些必要配置
......
}初始化成功可以在 console 里看到一条日志:
FMAgent: init succeeded.
关于 FMAgent 的配置
在上面代码中,可以看到初始化对象时,需要传入一个配置对象。因为这个配置在整个 app 中应该都是相同的,所以在 demo 中我们把配置放在了 app 对象的 globalData 里,我们强烈建议你也这么做
partnerCode 和 appName 为必要参数,如果没有传入则初始化时会抛出异常
在 app.js 中:
App({
......
globalData: {
......
_fmOpt: {
partnerCode: "", // 请填入您的 partner code
appName: "", // 请填入您的 app name
env: "PRODUCTION"
}
}
})在设备指纹对象初始化完成后,就可以获取设备信息了。我们的设备指纹 SDK 采用类字节跳动 API 的调用模式,支持传入 success、fail、complete 三个回调及其它配置字段:
fmagent.getInfo({
page: that, // 请传入 FMAgent 所在的 Page 或 Component 对象(确保原生的小程序对象,第三方框架 Taro 配置:Taro.getCurrentPages()[Taro.getCurrentPages().length - 1],暂不支持其他框架)
// 如果您开通了 unionid 功能,请传入加密的用户 unionid
// 否则留空即可
unionid: '',
success: function (res) {
// 成功回调,res 为 blackBox 字符串
},
fail: function (res) {
// 失败回调,res 为各种 exception 对象
},
API参数说明