如何从REST获取Office 365日历中的事件?
我在Azure中创建了一个应用程序,我有来自此请求的令牌:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?
client_id=[app_id from AZURE]
&response_type=code
&redirect_uri=https://mypage_domain.com
&response_mode=query
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fcalendars.read%20
&state=12345
接下来我尝试获取活动:
$ch = curl_init();
$headers = array();
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$postFields = 'grant_type=authorization_code&code='.$authCode.'&redirect_uri='.$redirectUri.'&scope=openid&client_id='.$clientId.'&client_secret='.$clientSecret;
curl_setopt($ch, CURLOPT_URL,'https://login.microsoftonline.com/common/oauth2/v2.0/token');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$serverOutput = curl_exec ($ch);
curl_close ($ch);
$jsonOutput = json_decode($serverOutput, true);
$chUser = curl_init();
$headersUser[] = 'Authorization: Bearer '.$jsonOutput['id_token'];
curl_setopt($chUser, CURLOPT_URL,'https://graph.microsoft.com/v1.0/me/events/');
curl_setopt($chUser, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($chUser, CURLOPT_HTTPHEADER, $headersUser);
$serverOutputUser = curl_exec($chUser);
curl_close($chUser);
但我收到错误:Access token validation failure
。
我做错了什么? 我找到了Laravel的例子,但我需要简单的通用代码。我需要在Wordpress中使用它来为日历页面用户编写事件。
答案 0 :(得分:1)
您指示了错误的授权标头。实际上,授权标头使用具有以下结构的承载令牌:Bearer <access_token>
。
$headersUser[] = 'Authorization: Bearer '.$jsonOutput['**access_token**'];