我正在尝试为 SPA 创建一个概念证明,它将允许最终用户(拥有 office365 帐户)登录并查看他们的 office365 电子邮件。但是,在使用本教程进行测试时,我遇到了两个问题:https ://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa
当我使用我的个人 365 帐户登录时,可以登录,但在请求此端点“ https://graph.microsoft.com/v1.0/me/messages ”时收到 401 未经授权的响应。与我请求基本教程“ https://graph.microsoft.com/v1.0/me ”端点时相比,我得到 200 和正确的数据。
当我使用我的工作 365 帐户登录时,登录弹出窗口中的登录被拒绝...“来自身份提供者‘已编辑’的用户帐户‘已编辑’在租户‘默认目录’中不存在,并且无法访问应用程序‘已编辑’ '(已编辑)在该租户中。该帐户需要首先添加为租户中的外部用户。注销并使用不同的 Azure Active Directory 用户帐户重新登录。”
我在这里测试了我的个人和工作帐户,它们都工作正常:https ://developer.microsoft.com/en-us/graph/graph-explorer
因此,我担心我没有正确修改本教程或我的应用程序注册,因为我不想手动将个人用户添加到我的租约中(如果这甚至是一件事) - 我假设任何人都拥有有效的 o365 登录最终将能够使用我的水疗中心阅读他们自己的电子邮件。
为了测试消息端点,我对教程代码进行了以下更改:
- 添加了一个 msalConfig.auth.redirectUri 以匹配我的应用注册中的那个
- 将 graphConfig.graphMeEndpoint 从“ https://graph.microsoft.com/v1.0/me ”和“ https://graph.microsoft.com/v1.0/me/messages ”更改
- 将 requestObj.scopes 从 ["user.read"] 更改为 ["user.read", "mail.read"]
我对我的应用注册进行了以下更改:
- 应用注册 > 我的应用 > 身份验证
- 重定向 URI > 为本地和生产添加了 URI
- 隐式授予 > 检查访问令牌和 ID 令牌
- 支持的帐户类型 > 我已经尝试了所有 3 个设置,当前设置为“任何组织目录中的帐户”
- 证书和机密 > 无
- API 权限 > 这最初仅设置为默认“User.Read”。现在包括“Mail.Read”,还为默认目录键入 Delegated 和 Granted
- 公开一个 API > 无
- 所有者 > 默认我的用户设置为类型成员
- 角色和管理员 > 无
- Manifest > 我手动设置了这两个值
- “accessTokenAcceptedVersion”:2
- "signInAudience": "AzureADandPersonalMicrosoftAccount"
我已经搜索了 stackoverflow、MS 教程、博客,而且我正在转圈 - 我不知道还能尝试什么 - 有没有人对我可能需要进行哪些其他代码或应用注册配置设置有任何建议我认为将是一个简单的 POC 启动和运行?