2016-03-26 17 views
0

すべての連絡先を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); 
    } 
} 

任意の助けをいただければ幸いです、ありがとう!

答えて

0

興味深い。私はこれも参照してください、私はデスクトップのOutlookでノートを設定する場合のみ。 Outlook Web Appで設定した場合、正常に動作します。私はOWAの「壊れた」ものを編集して修正することもできます。

一時的な回答として、OWAの連絡先を編集して修正することができます。より良い答えが得られたら、この回答を更新します。

+0

ありがとうございます。このプロジェクトでは、少なくとも2000年の連絡先の編集保存をクリックして、数時間を過ごすようにしてください。 私は間違いなく将来的にこれを再び使用する可能性があるため、最終的には別の回答に興味があります。 – user3242224

関連する問題