【问题标题】:Getting "ErrorAccessDenied" while trying to query for a user's office365 profile photo using Microsoft Graph API v1.0尝试使用 Microsoft Graph API v1.0 查询用户的 office365 个人资料照片时出现“ErrorAccessDenied”
【发布时间】:2023-03-28 17:18:01
【问题描述】:

我在尝试使用 Microsoft Graph API v1.0 获取用户照片时收到“ErrorAccessDenied”。

我可以通过使用获取用户信息

var user = graphClient.Users["userprincipalname"].Request().GetAsync();

我也可以使用

"https://graph.microsoft.com/v1.0/users/userprincipalname/photo/$value"

在微软的图形资源管理器中获取用户的照片

但是当我尝试使用时

var user = graphClient.Users["userprincipalname"].Photo.Content.Request().GetAsync();

我明白了

{Code: ErrorAccessDenied
Message: Access is denied. Check credentials and try again. Inner error
}   

但我很确定我的凭据是正确的,因为我可以获得有关该用户的所有其他信息。 我的应用已在 Azure 门户中注册,如果有帮助,我会使用 v1.0 端点。

感谢任何帮助,谢谢!

【问题讨论】:

  • 您的应用程序是否使用与在图形资源管理器中进行测试时相同的凭据进行身份验证?
  • 您的应用在请求 OAuth 令牌时要求什么权限?
  • @VenkatAyyadevara-MSFT 在 Azure 门户中,我为应用程序权限和委托权限设置了 User.ReadBasic.All、Directory.Read.All、User.Read.All 的应用程序权限
  • @yfan183 感谢您的信息。您能否提供一个示例响应,包括提供请求 ID 的标头?
  • 另外请确保在您添加权限后用户已同意该应用程序。

标签: c# azure office365 microsoft-graph-api


【解决方案1】:

如果在用户同意后更新了应用程序权限,则需要重新同意。要强制向用户显示同意对话框,请在 /authorize 请求中包含 prompt=consent 查询参数。示例:https://login.microsoftonline.com/common/oauth2/authorize?prompt=consent

【讨论】:

  • 我不确定在哪里添加它,因为我使用了 Visual Studio 的内置 Configure Azure AD Authentication 函数来授权用户
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多