を郵送するためのサブスクリプションを作成しようとしたとき、私はマイクロソフトグラフの/subscriptions
エンドポイントを使用しようとしていますが、私は次の応答取得しています。Microsoftアプリケーション登録ポータルでステータスコード:禁断のイベント
stdClass Object
(
[error] => stdClass Object
(
[code] => ExtensionError
[message] => Operation: Create; Exception: [Status Code: Forbidden; Reason: Forbidden]
[innerError] => stdClass Object
(
[request-id] => 15acd5eb-46db-408e-8c6b-3bb779d63940
[date] => 2017-09-29T17:44:45
)
)
)
を私はアプリケーション許可をMail.Read
とUser.Read.All
私のアプリケーションに付与しました。
私はthis documentationです。
/subscriptions
へのコール直前に、アクセストークンを正常に取得し、それを使用して/users
エンドポイントからユーザー情報を取得しています。
:
$url = "https://graph.microsoft.com/v1.0/subscriptions/";
$headers = array();
$headers[] = 'Authorization: Bearer '.$token;
$headers[] = 'Content-Type: application/json';
$postData = array (
"changeType" => "created,updated",
"notificationUrl" => "https://example.com/subscriptionListener.php",
"resource" => "users/GUID-of-a-user/mailFolders('Inbox')/messages",
"expirationDateTime" => "2017-10-01T18:23:45.9356913Z",
"clientState" => "12345"
);
$postJSON = json_encode($postData);
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($postData));
curl_setopt($ch,CURLOPT_POSTFIELDS,$postJSON);
curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo "<pre>", print_r(json_decode($result), 1), "</pre>";
「私の確認エンドポイント(subscriptionListener.php
が)検証トークンと呼ばれているが、私はアカウントに電子メールを送信する場合、私は私を購読通知を受け取っていません。
UPDATE:私はtoken debuggerに私のトークンを貼り付け、私のトークンがの役割を示していることが見つかりました:
"roles": [
"User.Read.All"
],
のサブスクリプション・エンドポイントは、Microsoftアプリケーションポータルに応じて私のアプリを持っている、Mail.Read
が必要です。
私のアプリケーションの権限が自分のトークンに反映されていないようです。
大変助かりました!