0

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

4

2 回答 2

0

问题是当回调到来并运行它时,它永远不会到达你的 if 语句,因为你设置了一个标题。尝试这个...

if(isset($_GET['oauth_verifier'])) {
  $verifierCode = trim($_GET['oauth_verifier']);
  echo $verifierCode;
  $accessCode = GetAccessToken($verifierCode);
}else{
  header('Location: '.$authURL); 
}
于 2018-07-04T09:37:20.520 回答
-1

如果您的 etrade 回调配置正确,您应该会进入oauth_verifier查询字符串。

您应该能够捕获该oauth_verifier查询字符串元素存在并具有值。

查看 etrade PDF 的第 16 页关于他们的 API。

于 2015-08-18T23:57:10.700 回答