我在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;
}
Run Code Online (Sandbox Code Playgroud)
我的电话看起来像这样
$tok = $to->getRequestToken(array('oauth_callback' => 'http://127.0.0.1/twitter_prompt/index.php'));
Run Code Online (Sandbox Code Playgroud)
这是我做的唯一更改,重定向就像一个魅力,但是当我尝试使用我新授予的访问权限尝试拨打电话时,我收到错误.我收到"无法验证你"错误.此外,应用程序实际上从未实际添加到用户授权的连接中.
现在我阅读了规范,我认为我所要做的就是在获取请求令牌时指定参数.在oauth和twitter上多一点经验丰富的人可能会帮我一个忙吗?谢谢
我认为这是由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;
}
Run Code Online (Sandbox Code Playgroud)
并从PHP代码传递回调url.
$twitterObj->getAuthenticateUrl('http://localhost/twitter/confirm.php');
Run Code Online (Sandbox Code Playgroud)