通过Graph API生成联系人,生成"对象引用未设置为对象的实例。"

时间:2016-07-29 21:50:48

标签: php azure azure-ad-graph-api

我一直在使用Graph API在主帐户和我们所有组织的Office 365帐户之间创建联系人并进行同步。这种情况一直持续到过去一个月左右。

我的同步过程包括查询主帐户的特定文件夹中的联系人,缓存它们,然后运行目标用户列表,在必要时创建联系人。获取联系人列表,创建联系人文件夹和删除联系人仍然可以按预期工作。创建联系人返回" ErrorInternalServerError:对象引用未设置为对象的实例。"

我一直在使用client_credentials流,并检查我的应用是否在Azure AD管理面板中具有相应的凭据。下面是我为联系人创建POST的JSON对象。无论联系人或目标用户如何,都会发生这种情况。

{
"categories": [],
"birthday": null,
"fileAs": "GPS 00 Bob, Todd",
"displayName": "GPS 00 Bob, Todd",
"givenName": "Todd",
"initials": "T.G.0.B.",
"middleName": "",
"nickName": null,
"surname": "GPS 00 Bob",
"title": "",
"yomiGivenName": null,
"yomiSurname": null,
"yomiCompanyName": null,
"generation": "",
"emailAddresses": [
    {
        "name": "Email",
        "address": "todd.bob@contactsyncing.com"
    }
],
"imAddresses": [
    ""
],
"jobTitle": "Chief Financial Officer",
"companyName": "",
"department": "",
"officeLocation": null,
"profession": null,
"businessHomePage": null,
"assistantName": null,
"manager": null,
"homePhones": [
    ""
],
"mobilePhone": "",
"businessPhones": [
    ""
],
"homeAddress": {
    "street": "",
    "city": "",
    "state": "",
    "countryOrRegion": "",
    "postalCode": ""
},
"businessAddress": {
    "street": "701 East Lumbar Ave",
    "city": "Minot",
    "state": "ND",
    "countryOrRegion": "United States of America",
    "postalCode": "68745"
},
"otherAddress": {},
"spouseName": null,
"personalNotes": null,
"children": []
}

修改的 其他信息:我发布到具有其ID的特定联系人文件夹。以下是网址示例:https://graph.microsoft.com/v1.0/users/91bbdb7b-3b41-474c-93c9-99b1da960c18/contactFolders/AAMkADFlNzQ5NGQ5LTEwNjYtNGFiZS04NDlhLTViOGE0YzMzZjI3OQAuAAAAAAA9YtgrncHYSKObisZl7JkCAQChpNwDV4FXRaJC6UF1HyyuAAAAAAFFAAA=/contacts

该contactFolder ID是否正确形成? /编辑

脚本是用PHP编写的,我只是简单地提出这些请求。任何想法是建议将不胜感激。如果有任何其他信息有用,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

将联系人字段过滤到最低限度然后逐个重新添加后,我发现生日字段有问题。似乎Graph API不再接受 null 值。如果未指定生日,则完全删除该字段似乎已解决了该问题。

我认为这已经解决了。也许应该更新Graph API文档以反映这一事实?此外,改善API对此错误的响应似乎是明智的。 “InternalServerError”没有充分描述原因。

谢谢!