【问题标题】:Access token for Microsoft Graph API is immediately expiredMicrosoft Graph API 的访问令牌立即过期
【发布时间】:2021-04-28 04:53:14
【问题描述】:

我正在关注this guide 对 Microsoft Graph API 进行身份验证,并且使用 Postman 我可以通过 POST/token 端点成功获取令牌:

现在,复制该令牌并将其粘贴到 Authorization: Bearer {{token}},我尝试向 https://graph.windows.net/my-tenant/me?api-version=1.6/ 发出请求,但我得到的回复显示

{
    "odata.error": {
        "code": "Authentication_ExpiredToken",
        "message": {
            "lang": "en",
            "value": "Your access token has expired. Please renew it before submitting the request."
        },
        "date": "2018-05-23T08:05:10",
        "requestId": "f56bcd26-4314-41c6-81b6-e6540aa7b0ae",
        "values": null
    }
}

我刚刚创建的令牌怎么会过期?

【问题讨论】:

    标签: oauth-2.0 azure-active-directory microsoft-graph-api


    【解决方案1】:

    我怀疑令牌已过期,消息似乎已关闭。

    您正在尝试使用 MS Graph API 的令牌调用 Azure AD Graph API。 将您的范围更改为https://graph.windows.net/.default,或致电https://graph.microsoft.com/v1.0/me

    此外,您无法在使用客户端凭据流后调用 /me 端点。没有登录用户。你必须使用/users/object-id-or-upn

    【讨论】:

    • 使用microsoft graph scope token调用AAD graph api是绝对错误的。但我也认为使用客户端凭据流获取签名用户不应该起作用。它需要用户登录。
    • 谢谢!我之前曾尝试更改端点,但显然后来我调用了 graph.*windows*.com 而不是 graph.*microsoft*.com,当这不起作用时,我放弃了它并尝试了其他方法。现在它起作用了。我也明白为什么/me 在这种情况下不能工作; /users 端点现在可以工作了,所以我很高兴 :)
    【解决方案2】:

    对于将来遇到此问题的其他人:如果您的初始令牌请求中有一个 GUID,其中包含大写字母,也会发生此问题。端点将接受并发出令牌,但对于任何资源,比较都会中断。因此,请在您的 guid 中使用小型大写字母 :)

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多