OAuth回调进入循环

时间:2015-07-16 00:51:48

标签: php oauth etrade-api

我尝试使用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

2 个答案:

答案 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页。