【问题标题】:Microsoft Graph API - Create Contact doesn't workMicrosoft Graph API - 创建联系人不起作用
【发布时间】:2020-01-23 15:45:32
【问题描述】:

我正在尝试使用 Microsoft Graph API 的 Create Contacts 端点(文档在此处:https://docs.microsoft.com/en-us/graph/api/user-post-contacts?view=graph-rest-1.0&tabs=http)为我的用户注册新联系人。我按照 API 文档中的描述创建了正文,但出现以下错误:

{
    "error": {
        "code": "Request_BadRequest",
        "message": "A value without a type name was found and no expected type is available. When the model is specified, each value in the payload must have a type which can be either specified in the payload, explicitly by the caller or implicitly inferred from the parent value.",
        "innerError": {
            "request-id": "daf78520-50e6-444b-97a2-779762b3e6ed",
            "date": "2020-01-23T14:20:18"
        }
    }
}

使用的请求: 1. 发布https://graph.microsoft.com/v1.0/{{tenant_id}}/联系人; 2. 发布https://graph.microsoft.com/v1.0/me/contacts; 请求正文示例:

{
  "givenName": "Yulia",
  "surname": "Lukianenko",
  "emailAddresses": [
    {
      "address": "yulia@lukianenko.onmicrosoft.com",
      "name": "Yulia Lukianenko"
    }
  ],
  "businessPhones": [
    "+1 732 555 0102"
  ]
}

有人遇到过这样的问题吗?你是怎么解决的?

提前感谢您的帮助!

【问题讨论】:

  • 那个payload很好,我只是用它来POST到/me/contacts。但是,您的第一次 POST 尝试不起作用,该 URL 无效。您不能使用租户 ID。您是否尝试在Graph Explorer 中提出此请求?
  • 杰森约翰斯顿,谢谢你的回复! Graph Explorer 中的行为是相同的。我怀疑这是我的许可证的问题。您使用什么类型的许可证?提前谢谢!

标签: azure-active-directory microsoft-graph-api microsoft-graph-contacts


【解决方案1】:

这里的 POST 请求不正确。 它应该是 : https://graph.microsoft.com/v1.0/me/contacts

您还需要确保已将“Contacts.ReadWrite”权限授予在 AAD 中注册的应用。

P.S:我在您的示例中使用了与 graphExplorer 相同的 JSON,并且成功创建了联系人。

【讨论】:

  • 感谢 Abhijeet Jadhav 的回复!我有“Contacts.ReadWrite”权限作为委托,添加到应用程序。错误改为:"{"error":{"code":"AuthenticationError","message":"Error authentication with resource","innerError":{"request-id":"a2e640bf-ff33-460f- ae03-7188cfe1ece3", "日期": "2020-01-24T18:00:14" } } }"。在 postman 和 Graph Explorer 中也是如此。
  • 这似乎是权限问题。您是否能够成功地对 Postman 中的任何其他端点执行任何 POST 或 GET 请求?如果是,试试这个:在 Postman 中,生成 access_token。生成后,检查“Scope”参数。它应该有 - "graph.microsoft.com/Contacts.Read" 、 "graph.microsoft.com/Contacts.ReadWrite" 条目。或者,您也可以在 jwot 解码器 (jwt.ms) 中检查范围。复制 access_token 并将其粘贴到令牌文本框中。如果您没有看到这些范围,您需要再次检查权限。
  • Abhijeet Jadhav,我得到 200 用于获取联系人、获取用户、获取群组、创建用户、创建群组、获取 Postman 中的群组成员,仅当我在 url 中使用租户 ID 时,如 graph.microsoft.com/v1.0 {{tenant_id}}....当我使用 graph.microsoft.com/v1.0/me....It 时不会。对于组和用户,错误是:{“错误”:{“代码”:“Request_ResourceNotFound”,“消息”:“资源'1ee41a2e-6032-487d-a6ef-e69075423c01'不存在或其查询的参考属性之一对象不存在。",
  • 对于联系人仍然相同的“代码”:“AuthenticationError”,“消息”:“使用资源进行身份验证时出错”。即使在生成令牌时添加范围之后。以下是我在 JWT 中的角色:“角色”:[“OrgContact.Read.All”、“User.ReadWrite.All”、“Application.ReadWrite.All”、“Directory.ReadWrite.All”、“Contacts.ReadWrite”、 “Organization.ReadWrite.All”、“AppRoleAssignment.ReadWrite.All”]。观众是“aud”:“graph.microsoft.com”。应该没事。提前谢谢!
  • 一个问题,您使用什么类型的许可证?提前谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-15
相关资源
最近更新 更多