我尝试使用OAuth使用ETrade API验证我的应用程序。在我将浏览器重定向到ETrade以供用户进行身份验证后,回调URL与用户开始使用的页面相同(我返回同一页面以完成身份验证)。但是,一旦将其重定向回同一页面,重定向到ETrade就会再次发生。我该怎么做才能使应用程序不被重定向,而是可以完成身份验证?谢谢!
PHP:
require_once("./autotrading/SDK/samples/config.php");
require_once("./autotrading/SDK/Common/common.php");
$key = ETWS_APP_KEY;
$secret = ETWS_APP_SECRET;
$consumer = new etOAuthConsumer($key, $secret);
$request = new etOAuth($consumer);
$req_token = $request->GetRequestToken();
$oauthToken = $req_token['oauth_token'];
$oauthSecret = $req_token['oauth_token_secret'];
$authURL = $request->GetAuthorizeURL();
header('Location: '.$authURL);
//after authenticating, etrade's callback url looks like this: http://yourdomain.com/index.php?oauth_token=abc&oauth_verifier=123
if(isset($_GET['oauth_verifier'])) {
$verifierCode = trim($_GET['oauth_verifier']);
echo $verifierCode;
$accessCode = GetAccessToken($verifierCode);
}
供参考,以下是API:https://developer.etrade.com/ctnt/dev-portal/getContent?contentUri=V0_Code-SDKGuides-PHP
答案 0 :(得分:0)
问题在于,当回调函数开始并运行它时,它永远不会到达您的if语句,因为您已设置了标头。试试这个...
if(isset($_GET['oauth_verifier'])) {
$verifierCode = trim($_GET['oauth_verifier']);
echo $verifierCode;
$accessCode = GetAccessToken($verifierCode);
}else{
header('Location: '.$authURL);
}
答案 1 :(得分:-1)
如果您的etrade回调配置正确,您应该在查询字符串中获得oauth_verifier
。
您应该能够捕获oauth_verifier
查询字符串元素存在并具有值。
请查看有关其API的etrade PDF的第16页。