Microsoft Graph returns "The token contains no permissions, ..." 使用仅应用令牌时
Microsoft Graph returns "The token contains no permissions, ..." when using app-only token
我正在使用 Postman 尝试检索我的 Outlook 邮箱中最近收到的电子邮件。
为此,我已在应用程序门户中声明了我的应用程序。然后,我可以执行 GET
请求以从端点获取令牌:
https://login.microsoftonline.com/[tenantId]/oauth2/token
接下来,我尝试使用收到的令牌在
处执行请求
https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages
问题是 API returns:
{
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood.",
}
在我的应用程序的权限中,我已经授权了与阅读电子邮件相关的所有操作。我错过了什么吗?
这听起来像是您忘记了 "Grant permission"(我们中最优秀的人都会遇到这种情况 :P)。
授予您的租户权限。最简单的方法是通过 https://portal.azure.com -> Azure AD -> 应用注册 -> 你的应用 -> 设置 -> 所需权限 -> 按钮授予访问权限。)
与此相关
它也有助于获取令牌,并将其粘贴到 https://jwt.ms 中,这将向您显示令牌中的所有数据(并且还应显示有关已授予权限的声明)。
我实际上缺少对范围的管理员批准(read.mail 在我的例子中)。在 App-Only 使用中,您需要获得管理员的批准。为此,管理员必须使用此 url:
https://login.microsoftonline.com/common/adminconsent?client_id=[your_client_id]&state=[random_string]&redirect_uri=http://localhost/
系统会提示管理员批准权限。
例外情况是 API 查找会议时间或发送邮件,它仅适用于 Office 365 邮箱(在 Azure AD 上)而不适用于 微软账户.
为了便于参考,本文的其余部分使用 Outlook.com 来包含这些 Microsoft 帐户域。
我正在使用 Postman 尝试检索我的 Outlook 邮箱中最近收到的电子邮件。
为此,我已在应用程序门户中声明了我的应用程序。然后,我可以执行 GET
请求以从端点获取令牌:
https://login.microsoftonline.com/[tenantId]/oauth2/token
接下来,我尝试使用收到的令牌在
处执行请求https://graph.microsoft.com/v1.0/me/mailfolders/inbox/messages
问题是 API returns:
{
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood.",
}
在我的应用程序的权限中,我已经授权了与阅读电子邮件相关的所有操作。我错过了什么吗?
这听起来像是您忘记了 "Grant permission"(我们中最优秀的人都会遇到这种情况 :P)。
授予您的租户权限。最简单的方法是通过 https://portal.azure.com -> Azure AD -> 应用注册 -> 你的应用 -> 设置 -> 所需权限 -> 按钮授予访问权限。)
与此相关
它也有助于获取令牌,并将其粘贴到 https://jwt.ms 中,这将向您显示令牌中的所有数据(并且还应显示有关已授予权限的声明)。
我实际上缺少对范围的管理员批准(read.mail 在我的例子中)。在 App-Only 使用中,您需要获得管理员的批准。为此,管理员必须使用此 url:
https://login.microsoftonline.com/common/adminconsent?client_id=[your_client_id]&state=[random_string]&redirect_uri=http://localhost/
系统会提示管理员批准权限。
例外情况是 API 查找会议时间或发送邮件,它仅适用于 Office 365 邮箱(在 Azure AD 上)而不适用于 微软账户.
为了便于参考,本文的其余部分使用 Outlook.com 来包含这些 Microsoft 帐户域。