【问题标题】:Getting the access token for Microsoft Graph API获取 Microsoft Graph API 的访问令牌
【发布时间】:2017-04-17 17:22:02
【问题描述】:

我正在尝试获取 Microsoft Graph API 的访问令牌以访问 SharePoint 文档库。我的应用程序是一个 Windows 服务,因此我遵循here 描述的过程。

但是当我尝试获取访问令牌时,我得到的响应没有 scope 值。以下是我的回复:

{
  "token_type": "Bearer",
  "expires_in": "3600",
  "expires_on":"1492452559",
  "not_before": "1492448659",
  "resource": "https://graph.microsoft.com",
  "access_token": "Token"
}

因此,当我尝试使用此访问令牌查询 Graph API 时,我收到一条错误消息:令牌中需要存在 scp 或角色声明

有人可以帮我解决这个问题吗?提前致谢。

【问题讨论】:

  • 你用Token替换了很长的一段文字吗?
  • 您能否检查 jwt.io 等服务中的访问令牌,并检查那里是否真的没有范围。您甚至可以在此处粘贴一些内容(当然,所有私人信息都已编辑/替换)。您能否还提及您尝试使用令牌调用的 URL?您能否提及您在 Azure AD 中为应用授予的权限?如果这些都很好,那么这可能是一个同意问题。
  • 您好 Junnas,我已授予应用程序权限:在所有需要管理员同意的网站集中读取和写入文件。你能告诉我如何给予管理员同意吗?谢谢,
  • 这是获得管理员同意的 URL:login.microsoftonline.com/common/oauth2/authorize? client_id= &redirect_uri= &resource= &response_type=code &response_mode=form_post &prompt=admin_consent 搞定了。谢谢

标签: sharepoint office365 azure-active-directory office365api azure-ad-graph-api


【解决方案1】:

您的客户端应用程序在使用客户端凭据流时似乎没有设置适当的应用程序权限,下面是 Azure AD 经典门户中应用程序权限部分的图示。请选择所需的适当权限并重试:

此外,当使用客户端凭证流获取访问令牌时,您可以检查访问令牌中的roles 声明(这是检查应用程序权限的方法,而不是在令牌响应中),使用类似的工具http://jwt.calebb.net/ 解码访问令牌并检查应用权限:

【讨论】:

  • 感谢南宇的回复,我解码了访问令牌,我没有看到任何称为角色的密钥。我已在 Azure AD 中为应用程序授予应用程序权限,但似乎尚未获得管理员同意。你能告诉我如何给予管理员同意吗?谢谢。
  • 这是获得管理员同意的 URL:login.microsoftonline.com/common/oauth2/authorize? client_id= &redirect_uri= &resource= &response_type=code &response_mode=form_post &prompt=admin_consent 搞定了。谢谢。
猜你喜欢
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
相关资源
最近更新 更多