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

Posted

技术标签:

【中文标题】通过授权码授予获取 3 条腿令牌【英文标题】:Getting a 3-Legged Token with Authorization Code Grant 【发布时间】:2019-03-21 23:28:13 【问题描述】:

我目前正在尝试完成这个基于Getting a 3-Legged Token with Authorization Code Grant的分步教程

这是我的 cURL 代码:

curl -v "https://developer.api.autodesk.com/authentication/v1/gettoken" 
-X POST 
-H "Content-Type:application/x-www-form-urlencoded" 
-d "client_id=****&
    client_secret=****&
    grant_type=authorization_code&
    code=1O4F-z9gXRtGlBymcGoD3bV3Ws2cqqjeN78PpgGn&
    redirect_uri=http://localhost:3000/api/forge/callback/oauth"

这是我遇到的错误:

"developerMessage":"The authorization code/refresh token is expired or 
invalid/redirect_uri must have the same value as in the authorization 
request.","userMessage":"","errorCode":"AUTH-004","more 
info":"http://developer.api.autodesk.com/documentation/v1/errors/AUTH-004"* 
Connection #0 to host developer.api.autodesk.com left intact

注意:

我已经仔细检查了 URI 是否与我在 forge 应用程序上的回调 URL 相同。 cURL 代码上的间距只是出于视觉原因,这不是我在命令行中运行的方式。

【问题讨论】:

【参考方案1】:

我认为发生了什么是您在用户登录后获得的代码的过期时间非常短。毕竟,POST /authentication/v1/gettoken 端点应该在用户登录后立即被调用。

顺便说一句。我经历了相同的步骤,由于我花了一段时间使用收到的代码创建邮递员请求,所以我最终遇到了与您相同的错误。然后,当我请求另一个 code 并立即重新发送 Postman 请求时,它成功了。

【讨论】:

非常感谢您的帮助! 很高兴我能帮上忙 :) 干杯! 我遇到了类似的问题。我想知道授权码的有效期是多久? 我不认为这是在任何地方指定的,但根据我的经验,如果您在调用 gettoken 端点之前尝试调试东西,它只是“足够短”的时间段,它将是太晚了。

以上是关于通过授权码授予获取 3 条腿令牌的主要内容,如果未能解决你的问题,请参考以下文章

在“使用苹果签名”实施期间尝试通过授权码获取刷新令牌时总是发生“invalid_client”错误

Laravel 通过 Passport 实现 API 请求认证:隐式授权令牌

Laravel 通过 Passport 实现 API 请求认证:第三方应用篇(授权码获取令牌)

Oauth 刷新令牌授予类型

OAuth 2.0实战-为什么要先获取授权码code?

laravel socialite 从谷歌授权码获取谷歌访问令牌