2017-08-08 11 views
0

これは私をナットにしています!PHP Microsoft Azureのoauth2トークンPOSTメソッドが動作しません

このメソッドがPOSTの場合、Azureが「AADSTS90056:このエンドポイントはPOST、OPTIONS要求のみを受け付けます.GET要求を受け取りました」というエラーを返すのはなぜですか?

コード:

$url='http://login.microsoftonline.com/common/oauth2/v2.0/token'; 
$data = array('code'=>$code,'resource'=>$resource,'redirect_uri' => $redirect_uri, 'client_id' => $client_ID, 'scope' => $scope, 'grant_type' => $grant_type, 'client_secret' => $client_secret); 

$options = array(
    'http' => array(
     'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
     'method' => 'POST', 
     'content' => http_build_query($data) 
    ) 
); 
$context = stream_context_create($options); 
$result = file_get_contents($url, false, $context); 

var_dump($result); 
+0

、あなたのネットワークが送信される要求が実際にPOSTであるかどうかを確認するために呼び出しをチェックしてもらえますか? –

答えて

1

AzureのOAuth 2.0のエンドポイントは、HTTPS経由でのみアクセス可能であり、我々はプレーンなHTTPでそれに要求を行う場合にHTTPSは、302リダイレクトを経て施行されます。これにより、HTTP動詞がGETに変わります。したがって、HTTPの代わりにHTTPSを使用する必要があります。

enter image description here

関連する問題