刷新令牌Azure AD的授权无效(错误代码70000)

刷新令牌Azure AD的授权无效(错误代码70000),azure,post,login,oauth-2.0,azure-active-directory,Azure,Post,Login,Oauth 2.0,Azure Active Directory,我正在使用Azure AD登录获取访问令牌,并能够使用其API REST向SharePoint Online发出请求 我能够获取此访问令牌,但是,当我尝试获取刷新令牌时,出现了一个错误 在这一刻,我正在用邮递员测试这一点 我正在做以下工作: 我开始调用下一个URL以获取代码: https://login.microsoftonline.com/{tenant}/oauth2/authorize?客户端\u id={client\u id}和客户端\u secret={client\u sec

我正在使用Azure AD登录获取访问令牌,并能够使用其API REST向SharePoint Online发出请求

我能够获取此访问令牌,但是,当我尝试获取刷新令牌时,出现了一个错误

在这一刻,我正在用邮递员测试这一点

我正在做以下工作:

  • 我开始调用下一个URL以获取代码:
https://login.microsoftonline.com/{tenant}/oauth2/authorize?客户端\u id={client\u id}和客户端\u secret={client\u secret}&response\u type=代码
  • 当我收到代码时,我会发布以下帖子:
POST/{tenant}/oauth2/token HTTP/1.1 主机:login.microsoftonline.com 用户代理:PostmanRuntime/7.13.0 接受:*/* 缓存控制:没有缓存 授权类型:授权代码 客户端id:{client\u id} 客户机密码:{client\u secret} 代码:{code_生成的代码_上一个请求} 重定向\u uri:https://myapplication.com 资源:https://{mycompany}.sharepoint.com/
  • 我收到以下答复:
{ “令牌类型”:“承载者”, “范围”:“AllSites.FullControl Directory.ReadWrite.All Group.ReadWrite.All Sites.FullControl.All Sites.Read.All User.Invite.All User.Read.All User.ReadWrite.All”, “到期日”:“3599”, “ext_expires_in”:“3599”, “到期日”:“1559291698”, “不在之前”:“1559287798”, “资源”:“https://{mycompany}.sharepoint.com/”, “访问令牌”:“XXXXXXXX…”, “刷新令牌”:“YYYYYYYY…”, “id_令牌”:“zzzzzz…” }
  • 最后,我尝试通过以下帖子刷新令牌:
POST/{tenant}/oauth2/token HTTP/1.1 主机:login.microsoftonline.com 用户代理:PostmanRuntime/7.13.0 接受:*/* 缓存控制:没有缓存 授权类型:刷新令牌 客户端id:{client\u id} 客户机密码:{client\u secret} 刷新令牌:YYYYYYYY。。。 重定向\u uri:https://myapplication.com
  • 但在这一步中,我得到一个错误:
“错误”:“无效的授权”, “错误描述”:“AADSTS70000:提供的授权无效或格式不正确。\r\n空间ID:XXXX\r\n相关ID:XXXXX\r\n时间戳:2019-05-31 09:35:39Z”, “错误代码”:[ 70000 ], “时间戳”:“2019-05-3109:35:39Z”, “跟踪id”:“XXXX”, “关联id”:“XXXX” }
我已经检查过URL编码,没有URL编码,删除了客户端的_secret和重定向的_uri参数和其他东西,但我总是得到相同的错误。当然,我犯了一个愚蠢而明显的错误,但我看不出是哪一个。

似乎您正试图使用
授权码和
刷新令牌授予类型续订您的访问令牌

我已经部分重现了您遇到的错误。如下图所示:

可能的错误原因:

  • 虽然确切的原因不得而知
  • 我认为你粘贴的刷新令牌无效。在这种情况下 您可能会遇到此错误
  • 您必须粘贴您在上一页上获得的
    刷新\u令牌
    按部就班。确保你确实做到了
  • 错误解决方法:

    我正在分享实现你目标的确切方法。请查看以下步骤

    步骤:1

    我正在用
    邮递员
    处理这个案子。请启动邮递员并单击
    授权
    选项卡,同时选择
    类型
    作为
    OAuth 2.0
    最后单击
    获取新访问令牌
    。请参见下面的屏幕截图:

    步骤:2

    当您单击“获取新访问令牌”
    时,系统将提示“新建”窗口,如下图所示。用你的证件填写这个

    请求格式:

    当您单击
    请求令牌
    按钮时,将在登录窗口提示您。使用您的凭据登录

    步骤:3

    在登录之前,打开您的
    邮递员控制台
    ,如下所示:

    一旦登录成功。你会得到你的代码

    步骤:4

    成功登录后,转到
    邮差控制台
    请求正文
    段。只需打开它并复制代码。请参见下面的屏幕截图:

    步骤:5

    复制您的
    code
    并粘贴到
    authorization\u code
    令牌请求
    code
    文本框部分。您将获得您的
    access\u令牌
    refresh\u令牌
    id\u令牌

    请求格式:

    客户端id:{ApplicationId}

    作用域:{YourTokenScope}

    重定向_uri:{YourAppURI}

    授权类型:授权代码

    客户端密码:{YourApplicationSecret}

    代码:{codeofPreiousStep}

    如下图所示:

    步骤:6

    此步骤复制上一阶段(
    步骤5
    )中的
    刷新令牌
    ),并粘贴到
    刷新令牌
    文本框旁边,同时请求
    授权类型:刷新令牌
    请求。作为响应,您将获得新的
    访问\u令牌
    刷新\u令牌

    请求格式:

    客户端id:{ApplicationId}

    作用域:{YourTokenScope}

    重定向_uri:{YourAppURI}

    授权类型:刷新令牌

    客户端密码:{YourApplicationSecret}

    刷新令牌:{上一步的刷新令牌}

    请参见下面的屏幕截图:

    注意:

  • 确保您正在处理准确的
    code
    refresh-token
  • 范围
    令牌续订可选。您可以在无需付费的情况下续订代币 作用域,因为刷新令牌已包含您的作用域

  • 如果您还有任何疑问,请随时与我们分享。谢谢,快乐编码

    您似乎正在尝试使用
    授权码
    刷新令牌
    授权类型续订访问令牌

    我部分地再现了这个错误 https://login.microsoftonline.com/{tenant}/oauth2/authorize?client_id={client_id}&client_secret={client_secret}&response_type=code POST /{tenant}/oauth2/token HTTP/1.1 Host: login.microsoftonline.com User-Agent: PostmanRuntime/7.13.0 Accept: */* Cache-Control: no-cache grant_type:authorization_code client_id:{client_id} client_secret:{client_secret} code:{code_generated_previous_request} redirect_uri:https://myapplication.com resource:https://{mycompany}.sharepoint.com/ { "token_type": "Bearer", "scope": "AllSites.FullControl Directory.ReadWrite.All Group.ReadWrite.All Sites.FullControl.All Sites.Read.All User.Invite.All User.Read.All User.ReadWrite.All", "expires_in": "3599", "ext_expires_in": "3599", "expires_on": "1559291698", "not_before": "1559287798", "resource": "https://{mycompany}.sharepoint.com/", "access_token": "XXXXXXXX...", "refresh_token": "YYYYYYYY...", "id_token": "ZZZZZZZZ..." } POST /{tenant}/oauth2/token HTTP/1.1 Host: login.microsoftonline.com User-Agent: PostmanRuntime/7.13.0 Accept: */* Cache-Control: no-cache grant_type:refresh_token client_id:{client_id} client_secret:{client_secret} refresh_token:YYYYYYYY... redirect_uri:https://myapplication.com "error": "invalid_grant", "error_description": "AADSTS70000: Provided grant is invalid or malformed.\r\nTrace ID: XXXX\r\nCorrelation ID: XXXXX\r\nTimestamp: 2019-05-31 09:35:39Z", "error_codes": [ 70000 ], "timestamp": "2019-05-31 09:35:39Z", "trace_id": "XXXX", "correlation_id": "XXXX" }
    https://login.microsoftonline.com/{TenantId/Name}/oauth2/authorize?client_id={applicationId}&response_type=code&redirect_uri={yourURI}&response_mode=query&scope={yourScope}