PHP Microsoft Azure oauth2令牌POST方法不起作用

时间:2017-08-08 03:44:20

标签: php azure authentication oauth-2.0 http-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);

1 个答案:

答案 0 :(得分:1)

Azure OAuth 2.0端点只能通过HTTPS访问,如果我们使用普通HTTP向其发出请求,则会通过302重定向强制执行HTTPS。这将导致HTTP动词更改为GET。因此,您需要使用HTTPS而不是HTTP才能使其正常工作。

enter image description here