我尝试通过批量请求添加用户联系人。
问了谷歌后,我发现了这个: https://learn.microsoft.com/en-us/samples/azure-samples/graphapi-batching/batching-requests-to-msgraph/
我编写了一个类似示例的函数并得到了这个:
public static void importRelevantContactsToUserWithBatch(Manager manager)
{
List<Contact> succesful = new List<Contact>();
List<Contact> failed = new List<Contact>();
int limit = 1;
int counter = 0;
var user = users.Where(x => x.Mail == manager.Email).FirstOrDefault();
var contacts = getRelevantContactsForManager(manager);
foreach (var contact in contacts)
{
var batchRequestContent = new BatchRequestContent();
var requestUrl = graphServiceClient.Users[user.Id].Contacts.RequestUrl;
System.Console.WriteLine($"RequestURL: {requestUrl}");
var request = new HttpRequestMessage(HttpMethod.Post, requestUrl)
{
Content = new StringContent(JsonConvert.SerializeObject(contact.toGraphContact()), Encoding.UTF8, "application/json")
};
System.Console.WriteLine(JsonConvert.SerializeObject(contact.toGraphContact()));
var requestStep = new BatchRequestStep(counter.ToString(), request, null);
batchRequestContent.AddBatchRequestStep(requestStep);
var returnedResponse = graphServiceClient.Batch.Request().PostAsync(batchRequestContent);
returnedResponse.Wait(-1);
var response = returnedResponse.Result.GetResponseByIdAsync(counter.ToString());
response.Wait(-1);
if (response.Result.IsSuccessStatusCode)
{
succesful.Add(contact.toGraphContact());
System.Console.WriteLine($"{contact.toGraphContact().Id} wurde hinzugefügt");
}
else
{
failed.Add(contact.toGraphContact());
System.Console.WriteLine($"{contact.toGraphContact().Id} konnte nicht hinzugefügt werden");
}
counter++;
}
}
运行这段代码,我得到了一个 400 BadRequest 作为响应。
有人能给我提示我的问题在哪里我找不到它
提前致谢
租户是O365,请求使用应用程序认证并授予所有权限,通过批处理删除联系人工作正常所以我认为错误必须在这行内:
var requestUrl = graphServiceClient.Users[user.Id].Contacts.RequestUrl;
System.Console.WriteLine($"RequestURL: {requestUrl}");
var request = new HttpRequestMessage(HttpMethod.Post, requestUrl)
{
Content = new StringContent(JsonConvert.SerializeObject(contact.toGraphContact()), Encoding.UTF8, "application/json")
};
序列化联系人 JSON:
{"AssistantName":null,"Birthday":null,"BusinessAddress":{"City":"Friesoythe","CountryOrRegion":"DE","PostalCode":"26169","State":"NIE","Street":"Zeppelinring 9","AdditionalData":null,"ODataType":null},"BusinessHomePage":"","BusinessPhones":null,"Children":null,"CompanyName":"Appel ","Department":"","DisplayName":"Thomas Appel","EmailAddresses":[{"Address":"[email protected]","Name":"Thomas Appel ([email protected])","AdditionalData":null,"ODataType":null}],"FileAs":null,"Generation":null,"GivenName":"Thomas","HomeAddress":{"City":"Friesoythe","CountryOrRegion":"DE","PostalCode":"26169","State":"NIE","Street":"Zeppelinring 9","AdditionalData":null,"ODataType":null},"HomePhones":null,"ImAddresses":null,"Initials":null,"JobTitle":"","Manager":null,"MiddleName":null,"MobilePhone":null,"NickName":null,"OfficeLocation":"53,0191543°7,8857305","OtherAddress":null,"ParentFolderId":null,"PersonalNotes":null,"Profession":null,"SpouseName":null,"Surname":"Appel","Title":null,"YomiCompanyName":null,"YomiGivenName":null,"YomiSurname":null,"Extensions":null,"ExtensionsNextLink":null,"MultiValueExtendedProperties":null,"MultiValueExtendedPropertiesNextLink":null,"Photo":null,"SingleValueExtendedProperties":null,"SingleValueExtendedPropertiesNextLink":null,"Categories":["proALPHA_Export"],"ChangeKey":null,"CreatedDateTime":null,"LastModifiedDateTime":null,"Id":null,"ODataType":"microsoft.graph.contact","AdditionalData":null}