我有一个独立的PHP Web应用程序,负责添加Office365授权,以便仅授权用户才能访问。
我已经在Office365环境中的“应用程序注册门户”中注册了该应用程序,并收到了应用程序ID。我将重定向URL设置为本地主机上的应用程序:http://localhost/MyApp。
在Webapp的初始页面(login.php)中,我具有以下重定向:
Location:https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id.....
该片段成功运行,因为它将用户重定向到Office365登录页面,并且在用户输入凭据后,将其带到索引页面(index.php)。
在索引页面中,我具有以下内容:
<?php
$client_id = 'xxxx'; // application ID masked
$client_secret = 'xxxx'; //password/public key masked
$redirect_uri= "http://localhost/WebApp";
$resource = "https://localhost/WebApp";
$authorization_code = filter_input(INPUT_GET, 'code');
if(!$authorization_code){
die('something went wrong!');
}
$url = 'https://login.microsoftonline.com/common/oauth2/v2.0/token';
$data = array(
'client_id' => $client_id,
'code' => $authorization_code,
'redirect_uri' => $redirect_uri,
'resource' => $resource,
'client_secret' => $client_secret
);
$options = array(
'http' => array(
'header' => "Content-type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
//echo $authorization_code;
var_dump($result);
?>
运行此命令时,重定向后出现以下错误:
警告:file_get_contents(https://login.microsoftonline.com/common/oauth2/v2.0/token):打开流失败:HTTP请求失败!第29行的C:\ xampp \ htdocs \ MyApp \ index.php中的HTTP / 1.1 400错误请求
我还可以直接在浏览器中导航到index.php页面,这违背了身份验证的目的。
我们非常感谢您的帮助!