【问题标题】:Outlook Graph API- User Grant PermissionsOutlook Graph API - 用户授予权限
【发布时间】:2022-01-15 09:27:06
【问题描述】:

我创建了一个 Outlook 插件并使用清单文件将其加载。我已经通过 Azure 中的配置为文档https://docs.microsoft.com/en-us/office/dev/add-ins/develop/register-sso-add-in-aad-v2 中概述的应用程序提供权限。我已在 API 权限中授予 Mail.Read 权限。首次在 Outlook 中使用加载项时,Windows 会弹出一个窗口,要求用户授予应用程序读取其用户配置文件的权限。我如何要求用户也授予访问权限以根据 Graph Explorer 阅读他们的邮件?我正在使用 Angular 13 和 .net 核心。

  const params: Office.AuthOptions = {
  allowSignInPrompt: true,
  //forMSGraphAccess: true, // removed for testing in dev environment
  allowConsentPrompt: true,

};

  OfficeRuntime.auth.getAccessToken(params).then((token) => { xxxxx}

在清单文件中;

      <WebApplicationInfo>
    <Id>My App Id</Id>
    <Resource>api://localhost:3000/My App Id</Resource>
    <Scopes>
      <Scope>Mail.Read</Scope>
      <Scope>Mail.Read.Shared</Scope>
    </Scopes>
  </WebApplicationInfo>

  <Permissions>ReadWriteMailbox</Permissions>

我的 .net 代码如下所示;

                var userAssertion = new UserAssertion(token, "urn:ietf:params:oauth:grant-type:jwt-bearer");
            string[] graphScopes = { "Mail.Read", "Mail.Read.Shared" };
            result = await client.AcquireTokenOnBehalfOf(graphScopes, userAssertion).ExecuteAsync();

我在 Angular 中成功生成了一个令牌并将其发送到我的后端 API,但是当我尝试访问一个邮箱时,我得到了;

AADSTS70000:请求被拒绝,因为请求的一个或多个范围未经授权或已过期。用户必须先登录并授予客户端应用程序访问所请求范围的权限。

查看 Graph Explorer,我必须授予阅读邮件的权限,如果我随后导航管理应用程序和服务,我可以看到 Graph Explorer 可以访问“阅读您的电子邮件”,而我的 Outlook 应用程序只有“查看您的基本资料”。

救命!

干杯

乔治

【问题讨论】:

  • AADSTS70000 - 错误可能是由于:1. 令牌绑定标头为空 2. 令牌绑定哈希不匹配参考:AADSTS error codes
  • 我认为这个问题可能与使用 Microsoft 帐户而不是域帐户有关。我尝试使用图形资源管理器进行测试,您必须授予您希望图形 API 访问的内容的权限 - 在我的情况下为 Mail.Read。如果我然后去查看我的 Microsoft 帐户,并检查哪些应用程序有权访问我的电子邮件、个人资料等,我可以看到 Graph API 具有我接受的访问权限。我认为由于我已将权限委派为管理员,因此用户不必手动授予权限。我已经让它工作了,但它并不理想。

标签: .net azure outlook microsoft-graph-api office365


【解决方案1】:

AADSTS70000: The request was denied because one or more scopes requested are unauthorized or expired. The user must first sign in and grant the client application access to the requested scope.

根据user3686667 的评论,上述错误已解决。将此评论添加为 Community wiki 以帮助其他社区成员:

我认为这个问题可能与使用 Microsoft 帐户而不是域帐户有关。我尝试使用图形资源管理器进行测试,您必须授予您希望图形 API 访问的内容的权限 - 在我的情况下为 Mail.Read。如果我随后查看我的 Microsoft 帐户,并检查哪些应用程序有权访问我的电子邮件、个人资料等,我可以看到 Graph API 具有我接受的访问权限。我认为由于我已将权限委派为管理员,因此用户不必手动授予权限。我已经让它工作了,但它并不理想。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 2018-10-05
    • 2020-11-22
    相关资源
    最近更新 更多