返回token分两种情况:长度size=40风控后台生成token,长度 size>40 本地生成token。两者均属于有效token,可正常使用在业务上。
设备在非风险环境下,token在SDK中会有本地缓存,一般时效为24个小时;设备在风险环境下,会请求后端获取最新token。
指纹是指设备唯一标识,只存在于后端服务器;token是客户端和后端通讯产物,具有时效性,可以通过Server API获取token对应的设备指纹。
是指纹采集上报阶段,由于调用链路卡慢等原因,导致接口返回超时,指纹上报端会对将上报数据加密作为临时token称为降级token。web端、移动端集成支持降级token,小程序端不支持。
降级token长度较长,可正常传递后端,进行解析指纹。
降级状态是指本次降级,如果下次调用getToken()网络正常,发现上次是降级状态,会重新采集数据,提交到设备指纹服务器,获取正常的token。
移动端sdk或者web端集成设备指纹,在网络不好的情况下会生成降级token,即token的长度会很长,也可以解析出指纹的。首先获取不到token可以排查前端逻辑,是否获取捕获到降级token,并且传给后端进行校验。注意不可自定义token,否则会解析不到设备指纹。
小程序没有降级token逻辑,网络异常或接入错误会获取不到token。
若token为空,可排查以下
1.检查网络是否联通,是否能请求到服务
2.检查appid是否正确
3.检查是否请求错接口,web端-/c1,移动端-/m1,小程序端-/w1
首先确认是否是正确的指纹token。正常token长度是40位,可解析出指纹。
若token 长度为41位,则可能是以下原因造成
1.集成js错误,如私有化服务集成Saas的js
2.直接请求web端c1接口、wechat端w1接口拿的token,没有通过js进行采集上报
3.某些原因导致报文丢失或报文错误,服务端无法解密,可能由客户框架编译js导致或受设备环境影响。如遇到过get请求报文过长导致报文丢失,解决方案是前端支持post请求。 其他伪造token或者业务自定义token无法解析指纹。
指纹第一次请求是不采集数据请求,看请求头中有没有缓存,第一次返回为空会自动发起二次请求采集数据,token缓存在请求中。
检查assets文件是否集成,混淆配置是否正确。 如日志显示:I/libjdi sdk init cache failed,如有请检查 SDK的assets文件是否集成。
直接使用 android.os.Process.killProcess(android.os.Process.myPid()) 方式退出app会卡死。
需要先关闭所有的activity,才能执行 android.os.Process.killProcess(android.os.Process.myPid())。
请在AndroidManifest的Application中新加一句: android:usesCleartextTraffic="true"
params.put("PRIVATE_CLEAR_TOKEN", "clear");
请配置下相应的上架脚本,接入脚本详见接入文档的“配置打包脚本“:
请使用网页版本 脚本处理 ,Build Phases 里 Run Script 请放置在 Copy Files后面运行
修改项目配置里面的Validate Workspace为Yes后,重新编译
可以的,小程序版本支持初始化的时候配置 gps: false 参数关闭位置授权。
小程序在网络错误、appid错误及请求接口错误(web端-/c1,移动端-/m1,小程序端-/w1)的情况下,会获取不到token,没有降级token。移动端、web端支持降级token。