Twitter O-Auth Callback网址

时间:2009-09-28 17:23:07

标签: twitter oauth

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

我在php中编码并使用twitter wiki引用的示例代码http://github.com/abraham/twitteroauth

我得到了那个代码,并尝试了一个简单的测试,它运行得很好。但是我想以编程方式指定回调网址,示例不支持该功能。

所以我很快修改了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'));

这是我所做的唯一更改,重定向就像魅力一样,但是当我尝试使用新授予的访问权限尝试拨打电话时,我收到错误。我收到“无法验证你”错误。此外,应用程序实际上从未实际添加到用户授权的连接中。

现在我阅读了规范,我认为我所要做的就是在获取请求令牌时指定参数。在oauth和twitter上多一点经验丰富的人可能会帮我一个忙吗?谢谢

5 个答案:

答案 0 :(得分:7)

我认为这是由Twitter现在修复的,或者您可能错过了在您的应用程序设置中提供默认回调网址,这是动态回调网址上面其他人提到的工作所必需的。

无论如何,我通过在检索请求令牌时传递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代码传递回调网址。

$twitterObj->getAuthenticateUrl('http://localhost/twitter/confirm.php');

答案 1 :(得分:1)

@Ian,twitter现在允许127.0.0.1并且最近做了一些其他更改。

@jtymann,在这里查看我的答案,看看是否有帮助

Twitter oauth_callback parameter being ignored!

GL

广告歌曲

答案 2 :(得分:1)

即使我得到401错误..但它解决了.. 在将您的应用程序注册到Twitter时,您需要提供回调URL ... 比如http://localhost:8080

我用java做过这个... 所以我的代码是:String CallbackURL =“http:// localhost:8080 / tweetproj / index.jsp”; provider.retrieveRequestToken(消费者,CallbackURL);

其中tweetproj是我的项目名称 和index.jsp只是一个jsp页面......

希望这可以帮助你...

答案 3 :(得分:0)

用户在twitter.com上授权应用程序并返回到您的回调URL后,您必须交换请求令牌以获取访问令牌。

答案 4 :(得分:-2)

Twitter不尊重oauth_callback参数,只会使用已注册的应用程序设置中指定的参数。

它也不允许在该回调中使用127.0.0.1或localhost名称,因此我在DNS中设置了http://dev.twipler.com设置为127.0.0.1,以便您可以放心使用;

http://dev.twipler.com/twitter_prompt/index.php