我一直在使用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编写的,我只是简单地提出这些请求。任何想法是建议将不胜感激。如果有任何其他信息有用,请告诉我。
谢谢!
答案 0 :(得分:0)
将联系人字段过滤到最低限度然后逐个重新添加后,我发现生日字段有问题。似乎Graph API不再接受 null 值。如果未指定生日,则完全删除该字段似乎已解决了该问题。
我认为这已经解决了。也许应该更新Graph API文档以反映这一事实?此外,改善API对此错误的响应似乎是明智的。 “InternalServerError”没有充分描述原因。
谢谢!