PC 端:
DingTalkPC.config({
agentId: _config.agentId,
corpId: _config.corpId,
timeStamp: _config.timeStamp,
nonceStr: _config.nonceStr,
signature: _config.signature,
jsApiList: [
'runtime.permission.requestAuthCode',
'device.notification.alert',
'device.notification.confirm',
'biz.contact.choose',
'device.notification.prompt',
'biz.ding.post'] // 必填,需要使用的jsapi列表
});
确认上述参数无误, 在获取当前用户信息时, 能够换取到 authcode, 但是拿不到用户信息,返回的 json 是 null
对应用服务器有什么要求么? 诸如 必须支持 https 这样的要求?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用钉钉PC端的JavaScript API调用过程中,如果能够成功换取到authCode但获取用户信息时返回null,这通常意味着后端服务器与钉钉服务器的交互存在问题。关于应用服务器的要求,有以下几点可能影响到你的场景:
HTTPS要求:虽然不是所有API都强制要求HTTPS,但在处理用户身份验证和敏感数据时,钉钉确实推荐使用HTTPS来保证数据传输的安全性。确保你的后端服务支持HTTPS,并且在配置钉钉回调地址时使用的是HTTPS URL。
Token验证及时间戳:确保你的后端服务器在向钉钉服务器请求用户信息时,正确地使用了access_token,并且注意access_token的有效期,过期需要重新获取。同时,请求中包含的时间戳和签名(signature)必须是按照钉钉开放平台文档生成的,确保这些参数的准确无误。
权限与角色:检查当前登录用户的权限是否足够获取个人信息。某些企业内部应用可能会对不同角色的用户访问权限进行限制。
API调用频率:如果短时间内大量请求,可能会触发钉钉的流量控制策略,导致请求失败或返回null。请参考钉钉开放平台的API调用限制,合理安排请求频率。
错误码分析:尽管你提到返回json为null,但通常情况下,即使失败钉钉API也会返回一个错误码和错误信息。建议在后端日志中详细记录每次请求的响应状态码和具体错误信息,以便更精确地定位问题。
网络环境:确认服务器的网络环境没有阻止对外部服务(特别是钉钉API服务器)的访问,如防火墙设置、DNS解析问题等。
后端逻辑验证:检查后端处理authCode换取用户信息的逻辑是否有误,比如解码、参数传递、异常处理等方面。
综上所述,虽然HTTPS不是绝对必要条件,但为了安全性和可能的未来兼容性,建议使用HTTPS。同时,重点检查后端处理逻辑、权限设置、以及与钉钉服务器交互的细节。