【问题标题】:Azure AD - get user's profile photo, OAUTH access failureAzure AD - 获取用户的个人资料照片,OAUTH 访问失败
【发布时间】:2018-01-11 22:23:42
【问题描述】:

我正在尝试在使用 EWS 连接到 Office 365 的电子邮件应用程序的上下文中访问已登录用户的个人资料照片。

该应用已在 portal.azure.com 上注册,并具有以下所需权限:

  1. Office 365 Exchange Online -> 通过 Exchange Web 服务以登录用户身份访问邮箱
  2. Windows Azure Active Directory -> 登录并阅读用户配置文件

EWS 部分运行良好,我可以让用户登录,获取访问和刷新令牌,并使用“授权:承载访问令牌”执行 EWS 操作。

我遇到问题的部分是获取用户的个人资料照片。

这是我要查看的文档:

https://msdn.microsoft.com/en-us/office/office365/api/photo-rest-operations

我尝试使用的 API 端点是:

获取https://outlook.office.com/api/v2.0/me/photo

...带有“Authorization: Bearer access_token”标头。

上面的 API 返回这个响应:

HTTP 403 {"error":{"code":"ErrorAccessDenied","message":"访问被拒绝。 检查凭据并重试。"}}

可能出了什么问题?

  1. 根据上述文档,应该可以使用 user.read 范围获取用户的照片。
  2. 我上面提到的“登录并阅读用户个人资料”权限有一个工具提示说“User.Read”,所以我认为这是正确的范围

我尝试在 jwt.io 解码我的访问令牌,它有:"scp": "full_access_as_user" - 我的 User.Read 范围在哪里,或者“完全访问”是否包括“user.read”?

有什么想法吗?

【问题讨论】:

    标签: azure azure-active-directory


    【解决方案1】:

    这是因为您尝试使用 v2 端点 Rest API,但您没有使用 v2 端点注册应用程序。

    用户照片 API 仅适用于 Azure AD v2 身份验证端点,不适用于 Azure AD 和 Oauth:

    您需要前往Microsoft Application Registration Portal 注册您的应用程序。更多详情可以参考this document

    【讨论】:

    • 嗨,@KostyaVasilyev。如果这个答案对你有帮助,请标记为答案,以便我们帮助更多的人。谢谢!
    • 谢谢韦恩。看过那些文档,但不知何故没有“连接点”。 1 - v2 身份验证端点是否不支持 Exchange Web 服务 (EWS) 或 IMAP 来访问电子邮件(以及 EWS 的日历/联系人)?只有新的 Outlook REST API? 2 - 有没有办法使用 Azure AD 令牌(我们目前用于 EWS 访问)获取用户的个人资料照片?
    • 1.目前,v2 端点仅支持 Microsoft 图形 API 和 Outlook REST API。 2. 我想我们现在只能用v2点来获取用户照片流。但我没有做进一步的测试。
    【解决方案2】:

    仅作记录:

    因为我们无法为此使用 OAUTH2 API -

    • 因为我们的应用已经使用 EWS(Exchange Web 服务)...

    我们刚刚将 GetUserPhoto 命令与用户(帐户)自己的电子邮件地址一起使用。

    工作正常。

    【讨论】:

      猜你喜欢
      • 2023-04-04
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      相关资源
      最近更新 更多