我在使用Twitter的oauth身份验证和使用回调URL时遇到问题。

我正在使用php进行编码,并使用了Twitter Wiki http://github.com/abraham/twitteroauth引用的示例代码

我得到了该代码,并尝试了一个简单的测试,并且效果很好。但是,我想以编程方式指定回调URL,该示例不支持该URL。

因此,我迅速修改了getRequestToken()方法以接受一个参数,现在看起来像这样:

function getRequestToken($params = array()) {
  $r = $this->oAuthRequest($this->requestTokenURL(), $params);
  $token = $this->oAuthParseResponse($r);
  $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
  return $token;
}

我的电话看起来像这样
$tok = $to->getRequestToken(array('oauth_callback' => 'http://127.0.0.1/twitter_prompt/index.php'));

这是我所做的唯一更改,并且重定向的工作原理像一个 super 按钮,但是当我尝试使用新授予的访问权限尝试进行调用时,出现了错误。我收到“无法验证您的身份”错误。而且,该应用程序实际上永远不会添加到用户授权的连接中。

现在,我阅读了规范,我以为我要做的就是在获取请求 token 时指定参数。有人可以在oauth和twitter上有更多经验吗?谢谢你

最佳答案

我认为目前Twitter已解决此问题,或者您可能错过了在应用程序设置中提供默认回调URL的功能,动态回调URL才能正常工作,如上文所述。

无论如何,我通过在检索请求 token 时传递oath_callback参数来使其工作。我正在使用twitter-async PHP库,并且必须进行一些小的调整才能使该库传递回调URL。

如果您使用的是twitter-async,则更改如下:

修改了getRequestToken和getAuthenticateURL函数以将回调URL作为参数

 public function getRequestToken($callback_url = null)
  {
    $params = empty($callback_url) ? null : array('oauth_callback'=>$callback_url);
    $resp = $this->httpRequest('GET', $this->requestTokenUrl, $params);
    return new EpiOAuthResponse($resp);
  }


 public function getAuthenticateUrl($callback_url = null)
  {
    $token = $this->getRequestToken($callback_url);
    return $this->authenticateUrl . '?oauth_token=' . $token->oauth_token;
  }

并从您的PHP代码传递回调URL。
$twitterObj->getAuthenticateUrl('http://localhost/twitter/confirm.php');

10-08 09:12
查看更多