程序重启后,第一次调用接口,如果接口出错(网咯不通),则之后的所有调用,sdk不会去获取access_token,导致出现IAM Certification failed,
通过跟踪发现第一次出错的时候,程序会将isBceKey.set(true);
, 后面的请求再来的时候重新获取token的逻辑会跳过,导致后面的调用都没有token
重现可以第一次调用的时候,可以先关闭网卡,人为的使第一次调用出错。
收藏
点赞
0
个赞
请登录后评论
TOP
切换版块
您的程序肯定和SDK没关系了。每次new只是让您测试一下哦。不要误解了哦~。
确保给的参数无误。尤其是SECRETKEY 确保不要带空格。
IAM Certification failed 基本大多数都是复制3个参数值 尤其是最后一个带空格导致。错误信息的一个解决方案
https://ai.baidu.com/forum/topic/show/496572 如果不此问题导致 则可以忽略
单例加载 假设会返回IAM Certification failed 正常应该是json格式的字符串。可以根据errorcode errormsg 判断并对单例加载SDK进行重新加载一次。
当单例加载失败。去调用接口返回的错误自己也可以优先处理一下的。厂商也有可能某些细节没考虑好。所以开发者们可以针对这样的情况进行自己优先处理一下。
想清楚为什么获取token失败 会把isBceKey 设置为true 这个确实就是github 提交issue 看官方技术如何回复了。或者提交工单咨询一下。
改成了每次new,但是我的程序设计跟百度SDK,有什么关系呢?
每次new带来的问题是一次调用每次都是2次网络交互,增加成本。
获取access_token 是APPID APIKEY SECRETKEY三个值。
我感觉如果你是单例加载 参数错误 或你说的那种情况 就会导致了。
如果是每次都是new 应该不会的。