2017-08-08 77 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訪問,並且HTTPS強制執行通過302重定向如果我們對它的要求與普通的HTTP。這將導致HTTP動詞更改爲GET。所以,你需要使用HTTPS而不是HTTP來使它工作。

enter image description here