【问题标题】:"The tenant for tenant guid does not exist" even though user is listed on users endpoint?即使用户在用户端点上列出,“租户 guid 的租户不存在”?
【发布时间】:2019-08-09 07:47:47
【问题描述】:

我正在尝试与 Outlook 的 API 集成(更具体地说,我想列出用户的联系人,并能够对他们进行一些 CRUD)。

我在 Azure 上创建了一个 Azure 帐户、一个 Office 365 开发人员帐户和一个应用程序。

我可以使用登录端点获取访问令牌,如下所示:

https://login.microsoftonline.com/<tenant_id>/oauth2/token

我还可以使用不记名令牌通过/users 端点检索用户列表或获取用户的详细信息。 “get user”方法的结果返回如下:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
  "businessPhones": [],
  "displayName": "Renato Oliveira",
  "givenName": "Renato",
  "jobTitle": null,
  "mail": null,
  "mobilePhone": null,
  "officeLocation": null,
  "preferredLanguage": null,
  "surname": "Oliveira",
  "userPrincipalName": "renato.company.com.br#EXT#@renatocompanycom.onmicrosoft.com",
  "id": "<user_id>"
}

当然,这是使用/users端点传递user_id

https://graph.microsoft.com/v1.0/users/<user_id>

但是,我无法获取此用户的联系人。当我向下面的端点发送 GET 请求时

https://graph.microsoft.com/v1.0/users/<user_id>/contacts

我收到以下错误:

{
  "error": {
    "code": "OrganizationFromTenantGuidNotFound",
    "message": "The tenant for tenant guid '<my_active_directory_tenant_id>' does not exist.",
    "innerError": {
      "request-id": "<request_id>",
      "date": "2019-03-18T20:43:16"
    }
  }
}

为什么会这样?为什么它可以与/users 一起工作,但不能与/users/{id}/contacts 一起工作,即使应用程序已激活所有权限,并且默认目录已获得管理员同意?

【问题讨论】:

  • 您是否使用了同时也是电子邮件地址的用户 ID 进行测试?
  • 我用的是用户的uuid

标签: rest azure outlook


【解决方案1】:

我没有在我这边重现您的问题。我的步骤如下,供您参考。

1.在 Azure 门户上注册应用程序并授予其图形权限。

2.获取访问令牌。

3.调用api之前,需要确认账号需要是有效的邮箱地址。我的是 demo101@**.onmicrosoft.com。

4.调用graph api。

【讨论】:

  • 我不明白。我的用户名不是“onmicrosoft.com”地址,而是我的实际电子邮件地址。你知道为什么吗?
  • 我明白了。您需要将用户添加为成员,而不是访客。 docs.microsoft.com/en-us/azure/active-directory/fundamentals/… 并且用户名必须是有效的电子邮件地址。
  • 用户(我的用户)不是访客。它被分配为“成员”,来源为“Microsoft 帐户”。但是,用户名并不指向有效的 Outlook 地址。那可能是问题吗? ? 用户名是具有自定义域(我公司的)的有效 GSuite 地址,我用它来创建 Microsoft 帐户。
  • @RenatoOliveira 您找到解决方案了吗?我在尝试为用户列出日历时遇到了完全相同的问题。
【解决方案2】:

Authenticate with your own identity: 这将使用您自己的身份(应用身份)。此 OAuth 流程称为客户端凭据授予流程。

“使用您自己的身份进行身份验证”不是 Microsoft 个人帐户的允许方法。

在此处查看此来源,如果我们中的任何人使用个人帐户,那么客户端凭据流程将不适用于我们。 https://github.com/O365/python-o365#authentication-steps

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2022-10-25
    • 1970-01-01
    相关资源
    最近更新 更多