小程序对各种请求接口都做了域名限制,所以需要在小程序网站后台页面中添加同盾域名才可以保证小程序能正常给同盾设备指纹服务器发送信息
在 设置-开发设置-服务器域名的 request 合法域名 中添加:
同盾小程序设备指纹中使用了 canvas 指纹技术,需要在集成时手动加入。假设我们想在 index 页面中采集设备信息,那么就需要在 pages/index/index.jxml 文件末尾添加以下代码:
{
<view>
<canvas canvas-id='tdcanvas' style="visibility: hidden;position: fixed;z-index: -999;left: 9999px;"></canvas>
</view>
}在每一个需要获取设备信息的页面创建一个实例。比如:在pages/index/index.js中,先在文件顶部引用sdk:
import FMAgent from '../../fmsdk/fm-xxx-es.min.js'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.在设备指纹对象初始化完成后,就可以获取设备信息了。
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,导致查询结果异常
fail的原因可能为:
传入的timeout不是数字类型;
获取systemInfo错误,返回值为jd.getSystemInfoSync()的报错;
注意:
blackbox存在有效期,所以请不要自行对blackbox做缓存,在我们SDK内部有缓存机制,所以请在需要blackbox的地方,调用getInfo接口即可。