2

ライブから連絡先をインポートすることから始めました。今、MS が何を考えているのかはわかりませんが、彼らは真剣に、手にしたものすべてを過度に複雑にしています。

私のアプリでは、電話番号を取得することが非常に重要です。実際、非常に重要なことですが、電話番号を持っていない場合、連絡先はスキップされます。私の方法では、電話番号が表示されません。各連絡先を1つずつループすると表示されると思いましたが、残念ながら愛はありません。

これが私の方法です:

$import_id = time();
$client_id = "xxx";
$redirect_uri = 'redirecturi';
$client_secret = "xxx";
$code = $_GET['code'];
$grant_type = "authorization_code";

$post = "client_id=$client_id&redirect_uri=$redirect_uri&client_secret=$client_secret&code=$code&grant_type=$grant_type";
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,"https://login.live.com/oauth20_token.srf");
curl_setopt($curl,CURLOPT_POST,5);
curl_setopt($curl,CURLOPT_POSTFIELDS,$post);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);
$result = curl_exec($curl);
curl_close($curl);
$token = json_decode($result);
$access_token = $token->access_token;
$user_id = $token->user_id;

$url = "https://apis.live.net/v5.0/me/contacts?access_token=$access_token";
$response =  curl_file_get_contents($url);
$response = json_decode($response);
foreach($response->data as $contact) {
    $contact_details = curl_file_get_contents("https://apis.live.net/v5.0/" . $contact->id . "?access_token=$access_token");
    debug($contact_details);
}
die();

ただし、次のような情報しか返されません (私が知っているこの人は、people.live.com で彼を見るとわかるように、連絡先番号を持っています):

{
   "id": "contact.id", 
   "first_name": "Danie", 
   "last_name": "Van den Heever", 
   "name": "Danie Van den Heever", 
   "is_friend": false, 
   "is_favorite": false, 
   "user_id": "userid", 
   "email_hashes": [
      "emailhash"
   ], 
   "updated_time": "2014-09-17T12:11:10+0000"
}

私のアクセス許可リクエストの URL (スコープを定義する) は次のようになります。

https://login.live.com/oauth20_authorize.srf?client_id=clientidkey&scope=wl.basic%20wl.offline_access&response_type=code&redirect_uri=redirecturi

連絡先番号を取得するには、さらにスコープを追加する必要がありますか? もしそうなら、どのスコープですか?それとも、これは不可能ですか?

4

2 に答える 2

0

ドキュメントを読むと、電話番号はUserオブジェクトの一部です。

電話番号を取得するには、次のようにします。

  • 彼らの連絡先のリストを取得します (これはあなたが行いました)
  • 結果セットを反復処理する
  • 連絡先の応答からユーザー ID を取得します。(キーid)
  • Userコレクションへのリクエスト(wl.phone_numbersスコープ付き)
  • 電話番号が null かどうかを確認する
    • それらが NULL の場合、反復をスキップします

電話オブジェクトの例 (User応答内)。

"phones": {
   "personal": "(555) 555-1212", 
   "business": "(555) 111-1212", 
   "mobile": null
} 

そう;

$arrUser = json_decode($strResponse, true);

if( is_null($arrUser['phones']['personal']) 
     AND is_null($arrUser['phones']['business']
      AND is_null($arrUser['phones']['mobile']) ) {
   //No phone numbers
   //Assuming you're in a loop, fetching a user object for each contact - skip the iteration & move onto the next contact.
   continue;
}
于 2014-10-07T11:00:16.183 に答える