Outlook のライブ連絡先をインポートするのに本当に苦労しました。しかし、数日間の研究開発の後、私は https://dev.office.com/blogs/outlook-rest-api-v1-0-office-365-discovery-and-live-connect-api-deprecation を見つけました。 Microsoft Graph に切り替えます。Azure のドキュメントやその他のものも試してみましたが、非常に紛らわしいことがわかりましたが、まだ明確ではありませんでした。次の手順に従ってください: 1) https://apps.dev.microsoft.comでアプリケーションを作成します。a) 新しいパスワードを生成します。アプリケーション ID とパスワードを保存します。b) プラットフォームを Web として追加し、https のみを使用でき、http は適用されないため、https でリダイレクト URL を追加します。c) [詳細オプション] で [ライブ SDK サポート] をオンにして保存します。
2) サインインしているユーザーの連絡先が必要なため、url のスコープを contact.read として渡します。
$client_id="YOUR_CLIENT_ID";
$redirect_uri = SiteUrl.'hotmail-contact';
$url="https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=".$client_id."
&response_type=code
&redirect_uri=".$redirect_uri."
&response_mode=query
&scope=offline_access%20user.read%20mail.read%20contacts.read
&state=12345";
3) 認証が成功すると、認証コードが返されます。コードを取得した後、https: //login.live.com/oauth20_token.srfでポストフィールドを使用して curl ポスト リクエストによってトークンのリクエストを取得します。
$fields=array(
'code'=> urlencode($auth_code),
'client_id'=> urlencode($client_id),
'client_secret'=> urlencode($client_secret),
'redirect_uri'=> urlencode($redirect_uri),
'grant_type'=> urlencode('authorization_code')
);
4) 連絡先を取得するには
$url = ' https://graph.microsoft.com/v1.0/me/contacts ' フィルターを適用することもできます
ここで、パラメーター url と token を使用して curl を要求します
public function curl_use_token($url,$token) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
// curl_setopt($ch,CURLOPT_HTTPHEADER,array('HeaderName: HeaderValue'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization:Bearer '.$token));
// curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization", "Bearer " + $token));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
// print(gettype($data));
// print($data);
return $data;
}
5)データを取得した後、返されるデータは純粋なjson形式ではないため、正規表現を適用してデータからjson部分のみを抽出し、デコード後に使用できます。読んでくれてありがとう