Paladins API调用createsession创建会话报日期格式无效错误
Paladins API createsession接口Invalid date format报错解决
核心问题原因
你当前代码里用time()生成的是秒级Unix时间戳,完全不符合createsession接口的入参要求,这个接口的timestamp参数不接受Unix时间戳,要求传入UTC时区下、格式为yyyyMMddHHmmss的时间字符串。
别被接口返回值里的"timestamp":"7/6/2022 3:49:56 PM"字段骗了,这个是服务端返回响应时的人类可读时间显示格式,不是入参要求,90%第一次对接这个API的开发者都会踩这个坑。
另外ping接口是无鉴权、无参数的公开探测接口,能调用成功只能证明网络连通、服务正常,没法验证鉴权参数的正确性。
修正后可运行的代码示例
$ping = file_get_contents("https://api.paladins.com/paladinsapi.svc/pingJson"); var_dump($ping); // 用gmdate生成UTC时区的符合格式要求的时间串,不受服务器本地时区影响 $apiTimestamp = gmdate('YmdHis'); $devId = "替换为你自己的开发者ID"; $authKey = "替换为你自己的开发者认证密钥"; // 注意这个位置传的是后台给的auth key,不是账号登录密码 $createSession = file_get_contents("https://api.paladins.com/paladinsapi.svc/createsessionJson/{$devId}/{$authKey}/{$apiTimestamp}"); var_dump($createSession);
额外注意事项
- 生成的时间串和Paladins服务端的时间差不能超过15分钟,否则会触发鉴权失败,请确保运行代码的服务器开启了时间同步
- 接口路径中密钥位置不要传入你登录开发者后台的账号密码,必须传入Hi-Rez开发者后台为你生成的专属接口访问auth key
- 成功创建的session有效期一般为15分钟,过期后需要重新调用接口生成新的session,不要重复频繁调用createsession接口,否则会触发接口频率限制
内容的提问来源于stack exchange,提问作者none
相关产品推荐
相关产品推荐

