Azure AD - 获取用户的个人资料照片,OAUTH 访问失败

2024-04-23

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

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

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

EWS 部分工作得很好,我能够让用户登录、获取访问和刷新令牌,并使用“授权:不记名 access_token”执行 EWS 操作。

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

这是我要查看的文档:

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

我尝试使用的 API 端点是:

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

...带有“授权:不记名 access_token”标头。

上面的 API 返回此响应:

HTTP 403 {“错误”:{“代码”:“ErrorAccessDenied”,“消息”:“访问被拒绝。 检查凭据并重试。"}}

可能出什么问题了?

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

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

有任何想法吗?


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

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

你需要去微软应用程序注册门户 https://apps.dev.microsoft.com/注册您的应用程序。欲了解更多详情,您可以参考这个文件 https://msdn.microsoft.com/en-us/office/office365/api/use-outlook-rest-api#azure-ad-v2-authentication-endpoint.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure AD - 获取用户的个人资料照片,OAUTH 访问失败 的相关文章

随机推荐

  • 如何在 Electron 桌面应用程序中使用 Google 登录?

    我正在使用 Node js 和 Express 制作一个简单的应用程序 它严重依赖 Google 登录来获取个人资料图片和昵称 当在新的 Electron 应用程序中测试它时 我遇到了错误 此浏览器或应用程序可能不安全 尝试使用不同的浏览器
  • mockito-core 与mockito-inline 之间的区别

    在我的项目中 我们已经有了mockito core依赖项 我想存根静态方法 我需要为其添加模拟内联依赖项 所以想了解一下它们之间的区别 它们可以共存吗 根据版本 4 2 0 的最新文档 mockito 社区似乎已经提出了 mockito i
  • FQL 流查询中 Facebook 帖子展示次数为空

    根据FQL 流文档 http developers facebook com docs reference fql stream 以下查询应该在由经过身份验证的页面所有者运行时返回展示计数 但它从未返回 我们让页面所有者直接在图形 API
  • 什么场景下才需要使用“方法隐藏”? [复制]

    这个问题在这里已经有答案了 可能的重复 隐藏在 C 中的方法并带有有效示例 为什么它在框架中实现 现实世界的优势是什么 https stackoverflow com questions 1193848 method hiding in c
  • 如何将数字(如 int)转换为“Number”?

    这可能是基本问题 但我找不到有用的东西 问题是 如何转换double or int价值Number类型 更具体地说oracle jbo domain Number 我尝试了以下方法 对于整数值 int i 9 Integer y new I
  • 如何通过 Angular 2+ 中的单元测试避免依赖地狱

    我看到很多关于如何在 Angular 2 中对简单组件进行单元测试的示例 但是当涉及到使用服务的测试组件时 维护测试床提供程序和导入就变成了一场噩梦 我怎样才能避免它 例如 我有 myComponents 它使用 myService 它使用
  • 什么定义了实时/近实时系统?

    系统是否应满足特定的指标才能被视为 分类为实时 Web 应用程序或近实时 Web 应用程序 当我看到我正在使用的系统的非功能性需求表明解决方案应实时 接近实时返回数据时 我理解这些术语的定义 如发现http en wikipedia org
  • 数独回溯 无效数独

    我创建了一个数独回溯求解器 它工作得很好 但现在如果数独无法解决 我想给出一个错误 因为它无效 例如 如果给出这个数独 http img5 imageshack us img5 2241 sudokugq jpg http img5 ima
  • MongoDB 空字符串值与 null 值

    在 MongoDB 生产中 如果某个键的值为空或未提供 可选 我应该使用空字符串值还是应该使用 null 作为值 1 使用空字符串与空字符串之间有什么优缺点吗 2 如果我将值设置为 undefined 以从现有文档中删除属性 与让属性值设置
  • 如何确定 iPhone 正在使用/解锁

    我面临的要求之一是需要检测用户是否正在使用 iPhone 即使我的应用程序也在后台 到目前为止 我找到了以下出路 但没有一个指向解锁机制 applicationProtectedDataWillBecomeUnavailable 这将告诉用
  • 当计算机通过组策略锁定时,C# SessionSwitchReason.SessionLock 不会触发

    编辑 这里的问题不是它是通过 GP 锁定的 而是它是在服务帐户下作为服务运行的 并且它无权访问交互式桌面 我有一个 C 应用程序 需要检查用户会话何时被锁定 我正在使用Microsoft Win32 SystemEvents Session
  • Java EE 身份验证:如何捕获登录事件?

    给定为 Java Web 应用程序定义的 FORM 类型的身份验证机制 如何捕获已执行登录在重定向到请求的资源之前发生事件 是否有任何类型的侦听器可以让我在用户登录时执行我的代码 我觉得定义过滤器不是最好的解决方案 因为过滤器链接到资源 即
  • PHP:使用strlen获取远程文件大小? (html)

    我正在查看 fsockopen 之类的 PHP 文档 他们说你不能在远程文件上使用 filesize 而不用 ftell 或其他东西做一些疯狂的事情 不确定他们到底说了什么 但我有一个很好的想法怎么做 file file get conte
  • setInterval() 只运行一次函数

    我想定期查询 PHP 脚本以获取新消息 为此 我使用 setInterval 函数和 AJAX document ready function var queryInterval 1000 How fast we query for new
  • C++ 类方法的 LD_PRELOAD

    我需要在 C 程序中插入方法调用 该类驻留在单独的共享库中 我以为我可以使用 LD PRELOAD 但我不确定这将如何工作 我只找到了 C 函数的示例 是否有一种方法可以为单个方法设置插入 而无需从插入的类实现中复制任何代码 只需为插入的代
  • OpenGL NURBS 曲面

    我正在学习 OpenGL 我想要一个中间有轻微驼峰的表面 我目前正在使用这段代码 但我不确定如何调整 ctrl 点以使其达到我想要的方式 它目前就像 我想要这样的 我不完全确定我应该使用哪些控制点 并且我对其工作原理感到困惑 include
  • Microsoft Cognitive API 不断告诉我:“消息”:“输入数据不是有效的图像或受密码保护。”

    我有图像的 base64 字符串 我正在尝试将其转换为 应用程序 八位字节流 因为这就是 api 所需要的 我认为我已经通过创建一个 blob 来做到这一点 正如您从我的函数中看到的那样 当我进行 api 调用时 我不断收到标题中的消息 有
  • 如何通过 JOIN 组合(合并)相似的列以删除 NULL

    问题简介 我有一个名为 客户 的超类表和两个从客户继承的名为 个人 和 公司 的子表 因此 客户实体与 人 或 公司 具有一对一的关系 客户只能是 个人 或 公司 但不能同时是两者 如下所示 Customer Person Company
  • 可以用excel引用外部宏吗?

    我有一个相当复杂的宏 需要在多个不同的 Excel 工作表上运行 该宏会定期更新 并且每当进行更改时 都需要在每个单独的 Excel 工作表中进行更改 有没有一种方法可以让每个Excel文档引用一个宏 例如 如果我有这样的层次结构 DOCU
  • Azure AD - 获取用户的个人资料照片,OAUTH 访问失败

    我正在尝试在使用 EWS 连接到 Office 365 的电子邮件应用程序的上下文中访问登录用户的个人资料照片 该应用程序已在 Portal azure com 上注册 并具有以下所需权限 Office 365 Exchange Onlin