我试图通过
将我的outlook.com帐户中的所有联系人数据读入我的应用程序https://graph.microsoft.com/beta/me/contacts?$top=10000
乍一看,这似乎运作良好,但后来我注意到了这一点:在v1.0
api版本的图表中,第二个手机号码根本没有字段,但在beta api中,每个contact都有phones
属性,这是一个集合phone resource type的对象。因此,应该可以获得多个手机号码。
这是API中的错误还是我做错了什么?是否有不同的API,它提供所有联系人数据?
编辑:
答案 0 :(得分:2)
看起来Graph不支持多个手机号码。在v1.0 API中,每个联系人都有一个mobilePhone
字符串属性(不是数组)。在beta Graph API中,当您尝试向联系人添加多个移动电话号码时,会出现以下错误:
PATCH https://graph.microsoft.com/beta/me/contacts/{contact-id}
{
"phones": [
{ "number": "1234567891", type: "home"},
{ "number": "9876543210", type: "mobile"},
{ "number": "4564564562", type: "mobile"}, // second mobile number
]
}
// Response
{
"error": {
"code": "ErrorInvalidProperty",
"message": "The multi-value property Phones has too many entries of the following type: of type: contacts:PhoneNumber:MobilePhone. The maximum number allowed is 1.",
"innerError": {
"request-id": "578d85ba-e467-47a4-8cc1-5671fde4a83f",
"date": "2017-12-29T20:07:46"
}
}
}
但是,当联系人有不同类型的号码时,您可以在一次通话中获取所有联系人的所有电话号码 - 家庭,移动等。我刚刚使用outlook.com帐户对此进行了测试,这里是设置多个API的API调用联系人的电话号码,并在一次API通话中获取所有电话号码。
我找到了一个随机联系人进行测试,复制了他们的ID并向PATCH
提出https://graph.microsoft.com/beta/me/contacts/[contact-id]
请求。
补丁体:
{
"phones": [
{ "number": "1234567891", type: "home"},
{ "number": "9876543210", type: "mobile"},
]
}
为了确认手机实际上已更新,我向GET https://graph.microsoft.com/beta/me/contacts/[contact-id]/phones
发送了一个请求,并在JSON响应中返回了两个电话号码。
由于联系人上没有电话属性,因此向v1.0
端点发送此相同请求将不起作用。但是,您仍然可以在v1.0中获取此数据,因为它只是分割在多个字段中。
向GET https://graph.microsoft.com/beta/me/contacts?$select=phones
发送请求似乎会向所有用户返回电话。
beta API可能会发生变化,因此我们不建议构建依赖于此端点的生产应用程序。请密切注意public changelog何时移至v1.0。
如果您希望在图谱API中看到对多部手机的支持,请在我们的UserVoice上发帖。