2

我有一个爱好项目来使用战网登录。我想知道在收到授权码后如何从 API 获取访问令牌。

这是 Oauth 流程问题,而不是战网问题。

目前我可以成功地为我在 dev.battle.net 中注册的应用程序授权用户,然后我尝试使用从 Battle.net 登录返回的授权码通过发送请求来获取访问令牌https://<region>.battle.net/oauth/token。但是我不断收到此错误:

{ "error": "unauthorized", "error_description": "An Authentication object was not found in the SecurityContext" }

我使用邮递员扩展程序将发布请求发送到该 uri。我使用我的客户 ID 和密码验证我的请求。我传递了 redirect_uri ( https://localhost )、granty_type (authorization_code)、code(从上一个授权步骤返回的代码)。但是我不断收到上面的错误。

我在网上找不到太多关于战网的信息。还有其他与 oauth 相关的帮助文章,但无法真正找到我的方式。想知道你能不能帮我做这些简单的事情。我只是想知道我在这里跳过了什么。

这是文档: https ://dev.battle.net/docs/read/oauth

https://localhost已添加到我的 mashery dev 帐户的应用程序设置中。 邮递员发帖请求截图

4

1 回答 1

4

再次,我在尝试了宇宙中几乎所有的组合后解决了这个问题:)

申请步骤:

  • 不要对不同的访问令牌试验使用相同的授权令牌,它们是无效的
  • 始终在您测试的每个域(包括本地主机)上使用 https,redirect_uri 也必须是 https。
  • 在从上一步获得的授权码中请求令牌时,您必须在 POST 请求的标头中使用“基本身份验证”。
  • 这是最重要的之一:对于请求令牌,将 redirect_uri、客户端密钥和秘密作为 POST 表单参数传递给经过身份验证的请求。这很有趣,因为它已经是经过身份验证的请求;为什么我需要再次传递我的秘密?无论如何,这就是它的工作原理。

以下是全文: http ://hakanu.net/oauth/2017/01/26/complete-guide-of-battle-net-oauth-api-and-login-button/

这是工作原型: https ://owmatch.me

谢谢。

于 2017-02-01T18:24:24.343 回答