すべての連絡先をOutlook 365から別のデータベースにインポートしようとしました。REST APIを使用してOutlook 365から連絡先を受け取ることができません
しかし、Outlook 365の連絡先の2番目のページにあるノートを取得したい場合、それらは空になります。
私はこのURLでAPIを呼び出し、PHPのコードを使用しています:なし特定のパラメータを持つ
https://outlook.office.com/api/v2.0/Me/Contacts
。すべてのログイン、トークンなどの部分は適切に処理され、正しく機能します。ここで
は私がしますprint_rと私の呼び出しから現在受信アレイの一例である:
(子)=>アレイ([ID] => ... [CreatedDateTime] => ... [LastModifiedDateTime] => ... [ChangeKey] => ... [カテゴリ] =>配列([0] => ...) [ParentFolderId] => ... [誕生日] => [FileAs] => ... [表示名] => ... [名前] => ... [イニシャル] => [ミドルネーム] => [ニックネーム] => ... [姓] => ... [タイトル] => YomiGameName => [YomiSurname] => [YomiCompanyName] => [Generation] => [EmailAddresses] =>配列([0] =>配列([名前] => ... [Address] => ...))[ImAddresses] => Array()[JobTitle] => ... [CompanyName] => ... [Department] => [OfficeLocation] => ... [職業] => [ビジネスホームページ] => ... [AssistantName] => [マネージャ] => [ホーム電話] =>アレイ() [MobilePhone1] => ... [BusinessPhones] =>アレイ([0] => ...) [HomeAddress] => Array()[BusinessAddress] =>配列([Street] => ... [City] => ... [State] => .. [子ども] =>配列())
「PersonalNotes」は毎回空です。連絡先にはたくさんのテキストが含まれています。
API呼び出しを行う関数は、このいずれかになります。
public function makeApiCall($method, $url, $payload = NULL) {
// Generate the list of headers to always send.
$headers = array(
"User-Agent: outlook/1.0", // Sending a User-Agent header is a best practice.
"Authorization: Bearer ".$this->access_token, // Always need our auth token!
"Accept: text/*, application/xml, application/json; odata.metadata=none", // Always accept JSON response.
"client-request-id: ".self::makeGuid(), // Stamp each new request with a new GUID.
"return-client-request-id: true", // Tell the server to include our request-id GUID in the response.
"X-AnchorMailbox: ".$this->user_email // Provider user's email to optimize routing of API call
);
// print_r($headers);
$curl = curl_init();
switch(strtoupper($method)) {
case "GET":
error_log("Doing GET");
break;
case "POST": // PAYLOAD POUR POST DOIT ETRE json_encode!!!
error_log("Doing POST");
$headers[] = "Content-Type: application/json";
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
break;
case "PATCH":
error_log("Doing PATCH");
$headers[] = "Content-Type: application/json";
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PATCH");
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);
break;
case "DELETE":
error_log("Doing DELETE");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
break;
default:
error_log("INVALID METHOD: ".$method);
exit;
}
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$response = curl_exec($curl);
error_log("curl_exec done.");
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($httpCode >= 400) {
return array('errorNumber' => $httpCode,
'error' => 'Request returned HTTP error '.$httpCode);
}
$curl_errno = curl_errno($curl);
$curl_err = curl_error($curl);
if ($curl_errno) {
$msg = $curl_errno.": ".$curl_err;
error_log("CURL returned an error: ".$msg);
curl_close($curl);
return array('errorNumber' => $curl_errno,
'error' => $msg);
}
else {
error_log("Response: ".$response);
curl_close($curl);
return json_decode($response, true);
}
}
任意の助けをいただければ幸いです、ありがとう!
ありがとうございます。このプロジェクトでは、少なくとも2000年の連絡先の編集保存をクリックして、数時間を過ごすようにしてください。 私は間違いなく将来的にこれを再び使用する可能性があるため、最終的には別の回答に興味があります。 – user3242224