【问题标题】:Microsoft Graph returns "The token contains no permissions, ..." when using app-only token使用仅限应用的令牌时,Microsoft Graph 返回“令牌不包含权限,...”
【发布时间】:2019-04-08 12:05:40
【问题描述】:

使用 Postman,我正在尝试检索 Outlook 邮箱中收到的最后一封电子邮件。

为了实现这一点,我在 App Portal 中声明了我的应用程序。然后,我可以发出GET 请求以从端点获取令牌:

https://login.microsoftonline.com/[tenantId]/oauth2/token

接下来,我尝试使用收到的令牌在

处执行请求
https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages

问题是API返回:

{
  "code": "NoPermissionsInAccessToken",
  "message": "The token contains no permissions, or permissions can not be understood.",
}

在我的应用程序的权限中,我已授权所有与阅读电子邮件相关的操作。我错过了什么吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow!我强烈建议您阅读"How do I ask a good question?",了解一些入门技巧。您在问题中遗漏了很多关键细节:您究竟注册了哪些范围?你到底是怎么打电话给/token的?您是否获得了此应用的“管理员同意”?

标签: microsoft-graph-api microsoft-graph-mail


【解决方案1】:

我实际上错过了范围的管理员批准(在我的情况下为 read.mail)。在仅应用程序使用中,您需要获得管理员的批准。为此,管理员必须使用此网址:

https://login.microsoftonline.com/common/adminconsent?client_id=[your_client_id]&state=[random_string]&redirect_uri=http://localhost/

系统将提示管理员批准权限。

【讨论】:

    【解决方案2】:

    这听起来像是您忘记了“授予权限”(这发生在我们中最好的人身上:P)。

    为您的租户授予权限。最简单的方法是通过https://portal.azure.com -> Azure AD -> 应用注册 -> 您的应用 -> 设置 -> 所需权限 -> 按钮授予访问权限。)

    与此answer相关

    获取令牌也有帮助,然后粘贴到 https://jwt.ms 中,这将显示令牌中的所有数据(并且还应该显示有关授予权限的声明)。

    【讨论】:

      【解决方案3】:

      例外情况是用于查找会议时间或发送邮件的 API,它仅适用于 Office 365 邮箱(在 Azure AD 上),不适用于 Microsoft 帐户。 p>

      为简单起见,本文的其余部分使用 Outlook.com 来包含这些 Microsoft 帐户域。

      https://docs.microsoft.com/en-us/previous-versions/office/office-365-api/api/version-2.0/calendar-rest-operations

      【讨论】:

        猜你喜欢
        • 2019-06-11
        • 1970-01-01
        • 2020-06-25
        • 1970-01-01
        • 2022-11-11
        • 1970-01-01
        • 2021-04-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多