即使用户在用户端点上列出,“租户 GUID 的租户不存在”?

Ren*_*ira 8 rest outlook azure

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

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

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

https://login.microsoftonline.com/<tenant_id>/oauth2/token
Run Code Online (Sandbox Code Playgroud)

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

{
  "@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>"
}
Run Code Online (Sandbox Code Playgroud)

当然,这是使用在其上/users传递的端点user_id

https://graph.microsoft.com/v1.0/users/<user_id>
Run Code Online (Sandbox Code Playgroud)

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

https://graph.microsoft.com/v1.0/users/<user_id>/contacts
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

{
  "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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?为什么它可以与 一起使用,/users但不能与 一起/users/{id}/contacts使用,即使应用程序已激活所有权限,并且已为默认目录授予管理员同意?

Ton*_* Ju 4

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

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

2.获取访问令牌。 在此输入图像描述

3.调用api之前,需要确认该账户需要是有效的邮箱地址。我的是 demo101@**.onmicrosoft.com。 在此输入图像描述

4.调用图api。
在此输入图像描述

  • 我懂了。您需要将用户添加为成员,而不是访客。https://learn.microsoft.com/en-us/azure/active-directory/fundamentals/add-users-azure-active-directory 用户名必须是有效的电子邮件地址。 (2认同)
  • @RenatoOliveira 你找到解决方案了吗?我在尝试为用户列出日历时遇到完全相同的问题。 (2认同)