Oauth2重定向调用缺少参数

时间:2015-03-11 00:39:23

标签: php oauth-2.0

我正在尝试使用OAuth2进行身份验证的家族历史记录Web服务进行身份验证。身份验证的基本工作流程是我针对请求身份验证会话的Web服务提交get请求。它返回响应HTML代码的正文,其中包含一些用户名和密码的登录组件。然后我的PHP应用程序将html代码回显到浏览器。然后,最终用户可以输入他或她的用户名和密码,然后提交给Web服务。这是行为变得不清楚的地方。理论上,Web服务应该重定向到预定义的重定向URI,其中包含URL中的一些参数。但实际上,提交密码会重定向到预先注册的重定向URI,但URL中不包含任何参数。我的项目主要是用PHP编写的。这是代码的snippit,它为认证会话提出了初始请求。

function logOn($mainURL, $credentials)
{
// create a new HTTP_Request object to be used in the login process
$request = new HTTP_Request();

// set the URL of the HTTP_Request object to the family search identity/login endpoint

$request->setUrl("https://web-service/authentication/path?response_type=code&client_id=".$credentials['key']."&redirect_uri=https://www.myredirectPage.edu/");

$request->_useBrackets = false;
$request->addHeader("User-Agent", $credentials['agent']);
$request->addHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
$request->sendRequest();

//HTML_HEADER;

//the response will come in the form of an html file
$responseHtml = $request->getResponseBody();

//Dynamically load html from request body onto the browser to allow for authentication
echo $responseHtml;


return $credentials;
}

最终用户将使用加载的html组件输入他们的登录凭据并点击提交。然后,Web服务重定向到我的重定向身份验证页面。下面提供了代码。

<?php

// process client request (Via url)
//gather code parameters from the redirect url.
if (isset($_GET['code']))
{
echo $_GET['code'];
}
else
{
echo "code not returned";
}
if (isset($_GET['error']))
{
echo $_GET['error'];
}
else
{
echo "error not returned";
}

?>

提前感谢您对此的任何帮助。

1 个答案:

答案 0 :(得分:0)

当我使用谷歌Chrome的网络调试工具时,我看到我的项目正在意外搜索Javascript和Css资源,所有这些都导致404(未找到)错误。经过仔细检查,我可以看到资源是Web服务服务器上资源的相对路径。它不是寻找“https://webService.net/js/importantJavascript.js”(位于服务的Web服务器上的现有文件),而是试图找到“https://mywebpage.edu/js/importantJavascript.js”(不存在的文件的路径)。