我真的很努力地导入 Live Outlook 联系人。但经过几天的研发,我发现 https://dev.office.com/blogs/outlook-rest-api-v1-0-office-365-discovery-and-live-connect-api-deprecation 这让我切换到 microsoft graph。我也尝试过使用 azure 文档和其他东西,但我发现它非常令人困惑,但我仍然不清楚它。所以我在 php 中实现了以下内容,结果幸运地成功了。只需按照以下步骤操作: 1) 在 https://apps.dev.microsoft.com中创建您的应用程序a) 生成新密码。保存应用程序 ID 和密码。b) 将平台添加为 web 并添加带有 https 的重定向 url,因为只有 https 可以使用,http 不适用。c) 检查高级选项下的实时 SDK 支持并保存。
2) 将 url 中的范围作为 contacts.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 post 请求获取令牌请求,postfields 为
$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部分,解码后我们可以使用它。谢谢阅读