我在Twitter的oauth认证和使用回调url时遇到了问题。
我正在用php编写代码,并使用twitter wiki引用的示例代码http://github.com/abraham/twitteroauth。
我得到了这个代码,并尝试了一个简单的测试,它工作得很好。但是,我想以编程方式指定回调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'));这是我所做的唯一更改,重定向的效果很不错,但是当我尝试使用新授予的访问权限尝试进行呼叫时,我得到了一个错误。我得到一个“无法验证你”的错误。此外,应用程序实际上从未被添加到用户授权的连接中。
现在,我阅读了规范,我认为我所要做的就是在获取请求令牌时指定参数。有没有更熟悉oauth和twitter的人可以帮我一把?谢谢
发布于 2011-01-26 17:42:01
我认为twitter现在已经修复了这个问题,或者你可能错过了在你的应用程序设置中提供一个默认的回调url,这是动态回调url工作所必需的,就像其他人上面提到的那样。
在任何情况下,我都是通过在检索请求令牌时传递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');发布于 2010-07-28 18:06:56
@Ian,twitter现在允许127.0.0.1,并在最近做了一些其他更改。
@jtymann,在这里检查我的答案,看看是否有帮助
Twitter oauth_callback parameter being ignored!
总帐
顺口溜
发布于 2010-11-26 20:27:32
甚至我也收到了401错误..但它已经解决了..。在向twitter注册您的应用程序时,您需要提供回调url...比如http://localhost:8080。
我已经用java做到了这一点...所以我的代码是: String CallbackURL="http://localhost:8080/tweetproj/index.jsp";provider.retrieveRequestToken(consumer,CallbackURL);
其中tweetproj是我的项目名称,而index.jsp只是一个jsp页面……
希望这对你有帮助。
https://stackoverflow.com/questions/1488278
复制相似问题