获得具有授权码授予的 3-Leged Token 会给出错误 AUTH-004

Posted

技术标签:

【中文标题】获得具有授权码授予的 3-Leged Token 会给出错误 AUTH-004【英文标题】:Get a 3-Legged Token with Authorization Code Grant gives an Error AUTH-004 【发布时间】:2021-12-17 00:42:07 【问题描述】:

在我们的应用程序中,我们有一个 Angular 前端应用程序,它具有用于 BIM 360 文档的 Autodesk 登录。用户登录前端后,我们从 Autodesk 检索 3 条授权代码并将其传递给 C# 后端,我们使用该代码获取 access_token 和刷新令牌。 我们正在使用它来获取授权码 -

https://developer.api.autodesk.com/authentication/v1/authorize?response_type=code&client_id=client_Id&redirect_uri=callbakcurl&scope=data:read

使用它从代码中获取 access_token -

https://developer.api.autodesk.com/authentication/v1/gettoken

我们收到以下错误 -


  "developerMessage": "The authorization code/refresh token is expired or invalid/redirect_uri must have the same value as in the authorization request.",
  "errorCode": "AUTH-004",
  "more info": "https://forge.autodesk.com/en/docs/oauth/v2/developers_guide/error_handling/"

我们确保我们的redirect_url 正确/相同以获取授权码并获取access_token。 谁能帮我看看这个授权码的有效期是多久?

【问题讨论】:

你的redirect_url url 编码了吗? 【参考方案1】:

需要检查的几件事:

正如@KingJ 已经提到的,确保您的重定向 URL 是 url 编码的;范围相同,我相信: 符号(如果有多个范围,还有空格)也应该被编码 请注意,您从第一次 HTTP 调用获得的code 仅在很短的时间内有效(以秒为单位);您应该在获得代码后立即进行第二次 HTTP 调用,否则它将过期 第二个请求的正文是什么?您是否设置了docs 中标记为所需的所有参数?

【讨论】:

以上是关于获得具有授权码授予的 3-Leged Token 会给出错误 AUTH-004的主要内容,如果未能解决你的问题,请参考以下文章

在不使用cookies的情况下使用授权码授予?

oAuth2.0:为啥需要“授权码”,然后才需要令牌?

oAuth2 的授权码授予类型

使用 Java Spring Rest Api 执行授权码授予流程

通过授权码授予获取 3 条腿令牌

如何根据实体类型授予权限?