【问题标题】:Can't access Modern Warfare API with jquery post无法使用 jquery post 访问 Modern Warfare API
【发布时间】:2020-04-18 14:06:17
【问题描述】:

我想通过他们的 api 提取我的现代战争统计数据。当我在浏览器中使用以下 URL 时,我会返回一个 json 文件。

https://my.callofduty.com/api/papi-client/stats/cod/v1/title/mw/platform/battle/gamer/LordNoodles%2321599/profile/type/mp

但是当我使用以下 jquery post 方法时

$.post("sameURL").done(function (data) {
   console.log(data);
});

我收到以下错误消息: 消息:“不允许:未通过身份验证” 类型:“com.activision.mt.common.stdtools.exceptions.NoStackTraceException”

这很奇怪,因为我显然已经登录了。

【问题讨论】:

  • 我在点击您的链接时遇到了同样的错误,因为我没有登录到那个网站。您需要发出 AJAX 请求以首先对自己进行身份验证,并且(我假设)收到一个身份验证令牌,然后您可以在后续请求的标头中使用该令牌。
  • 我使用的链接是假的。我把它改成了真的。你介意再试一次吗?我从那里得到信息的那个人说这不需要身份验证。
  • 这是我得到的:{"status":"error","data":{"type":"com.activision.mt.common.stdtools.exceptions.NoStackTraceException","message":"Not permitted: not authenticated"}}。在任何情况下,API 都需要身份验证。如果您查看文档,我相信会有一个关于如何获取访问令牌的指南,以及它应该在以后的请求中的位置 - 通常它在标题中
  • @RoryMcCrossan 不幸的是,即使 API 是公开的,也没有“官方”文档。任何试图解决这个问题的人基本上都是从网络应用程序中获取他们可以获取的任何端点。

标签: jquery api


【解决方案1】:

您需要使用 CSRF 令牌登录,然后使用检索到的数据作为 API 调用的输入。

一步一步:

  1. GET 调用 CSRF 令牌
  2. POST 调用以使用 CSRF 令牌和 Activison 凭据(存储 cookie)进行登录
  3. 使用上一步中的 cookie 获取 API https://my.callofduty.com/api/papi-client/stats/cod/v1/title/mw/platform/battle/gamer/LordNoodles%2321599/profile/type/mp 的调用

请随时查看文章https://somethingneeddoing.medium.com/how-to-call-rest-api-with-csrf-login-and-security-tokens-node-js-6685615b324e,其中有更详细的描述。

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 2016-06-24
    • 2021-04-29
    • 1970-01-01
    • 2019-12-12
    相关资源
    最近更新 更多