在任何人匆忙将此问题标记为重复之前,请告诉您 ITS NOT DUPLICATE
我已经检查了类似的问题,例如this,this,this和this,但这些问题都已有2年历史了那么那些答案就没用了。
所以这就是问题所在。我正在使用亚伯拉罕的图书馆,可以找到here。以下是我正在使用的代码:
if(!empty($_GET['oauth_verifier']) && !empty($_SESSION['oauth_token']) && !empty($_SESSION['oauth_token_secret']))
{
$connection = new TwitterOAuth('MY_CONSUMER_KEY', 'MY_CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
$_SESSION['access_token'] = $access_token;
$user_info = $connection->get("account/verify_credentials");
print_r($user_info);
}
从我上面做的print_r
,我得到的结果如下:
stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => 89 [message] => Invalid or expired token. ) ) )
由于这个invalid/expired token
我无法在工作中取得成功。所以我退后一步做了:
var_dump($access_token);
获得的结果是:
array(5) {
["oauth_token"]=> string(50) "*********"
["oauth_token_secret"]=> string(45) "*********"
["user_id"]=> string(10) "***My user id****"
["screen_name"]=> string(9) "***My screen name****"
["x_auth_expires"]=> string(1) "0"
}
在这里,您会看到最后一个元素是["x_auth_expires"]
,其值为0
。我认为这个元素没有出现在旧版本的库中。而且我认为这是引起问题的原因。
我尝试重新生成Customer_Key
和Customer_Secret
,但即便如此也没有帮助。
任何形式的帮助将不胜感激。谢谢。
答案 0 :(得分:1)
最后,我找到了解决方案。
您需要做的就是,一旦获得回调,再次使用新的访问令牌初始化该类。
$connection = new TwitterOAuth('MY_CONSUMER_KEY', 'MY_CONSUMER_SECRET', $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
$access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
$connection = new TwitterOAuth('MY_CONSUMER_KEY', 'MY_CONSUMER_SECRET', $access_token['oauth_token'], $access_token['oauth_token_secret']);
我不知道为什么会有效,但它确实像魅力一样。从here找到了这个解决方案。
答案 1 :(得分:0)
我在CI回调函数
中使用了它if($this->input->get('denied') != ''){
/* Remove all token from session */
$this->connection = NULL;
$this->connection = $this->twitteroauth->create($this->config->item('twitter_consumer_token'), $this->config->item('twitter_consumer_secret'));
$this->session->set_flashdata('account_block_error_msg',"Access denied");
redirect(base_url('/Sign-in'));
}