获取Office 365资源的访问代码时出现新的“ OAuth2授权代码已被兑换”错误

时间:2019-01-30 01:56:22

标签: oauth-2.0 office365api

我们有以下步骤可通过Office 365进行身份验证,并获取请求日历事件所需的访问令牌...

  1. 发送用户到https://login.microsoftonline.com/common/oauth2/authorize?response_type=code,并传递客户端ID和重定向URL
  2. 用户登录并使用?code =查询字符串值重定向到重定向URL
  3. https://login.microsoftonline.com/common/oauth2/token发出API请求以获取https://api.office.com/discovery/资源的令牌,并传递在步骤2中获得的代码。
  4. 存储访问令牌并刷新返回的令牌
  5. https://api.office.com/discovery/v2.0/me/services发出API请求以获取我们可以访问的端点列表
  6. 对于我要使用的端点(Office 365 Exchange),向https://login.microsoftonline.com/common/oauth2/token发出API请求以获取https://outlook.office365.com/资源的令牌,并传递我们在步骤中获得的代码2
  7. 存储访问令牌并刷新返回的令牌
  8. 使用第7步中的访问令牌获取日历事件

这曾经很好用,但是今天我从步骤6的API调用中得到了不同的结果

我曾经获得过访问令牌和刷新令牌,可以将它们用于outlook.office365.com资源,但现在却收到类似以下内容的错误消息...

{
    "error":"invalid_grant",
    "error_description":"AADSTS70002: Error validating credentials. AADSTS54005: OAuth2 Authorization code was already redeemed, please retry with a new valid code or use an existing refresh token.
    Trace ID: 37f11c2c-6450-4040-b297-48268c6d4b00
    Correlation ID: afdeb0cb-c14a-4267-9a5d-2422a1f84d62
    Timestamp: 2019-01-29 22:26:24Z",
    "error_codes":[70002,54005],
    "timestamp":"2019-01-29 22:26:24Z",
    "trace_id":"37f11c2c-6450-4040-b297-48268c6d4b00",
    "correlation_id":"afdeb0cb-c14a-4267-9a5d-2422a1f84d62"
}

所以看起来我第二次请求获取访问令牌时需要传递一个不同的代码,但是我从哪里得到这个不同的代码?

0 个答案:

没有答案