我正在处理此文档Authorize access to web applications using OAuth 2.0 and Azure Active Directory并且已经达到了成功登录时收到初始授权码的程度,但我很难获得授权令牌。据我了解,我需要在POST中发送代码以获取令牌。
我的POST请求是:
$code_received = $_GET['code']; //I get a code successfully
$url = 'https://login.microsoftonline.com';
$body="grant_type=authorization_code&client_id=myappid&code=" . $code_received . "&redirect_uri=https://mysite/auth.php&client_secret=***";
$options = array(
'http' => array(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'content' => $body
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
我得到的结果是bool(false)....所以没有返回 - 既不是令牌也不是错误。谁能看到我做错了什么?
答案 0 :(得分:1)
您至少在resource
中没有指定$body
。这应该是您尝试使用的API的资源URI。它告诉Azure AD您要调用哪个API。
对于https://graph.microsoft.com
的Microsoft Graph API。
对于Azure AD Graph API,它是https://graph.windows.net
。