2015-05-06 70 views
1

我試圖用codebird從Twitter獲取訪問令牌,首先獲取用戶授權使用我的應用程序的工作完全使用此代碼PHP,Codebird和Twitter爲什麼我收到錯誤401無效的請求令牌

require_once('lib/codebird.php'); 

\Codebird\Codebird::setConsumerKey("xxx", "xxxx"); 
$cb = \Codebird\Codebird::getInstance(); 
session_start(); 
    // get the request token 
    $reply = $cb->oauth_requestToken(array(
     'oauth_callback' => 'http://lifetanstic.co.ke/AppRegister')); 
    // store the token 
    $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); 
    $_SESSION['oauth_token'] = $reply->oauth_token; 
    $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; 
    $_SESSION['oauth_verify'] = true; 

    // redirect to auth website 
    $auth_url = $cb->oauth_authorize(); 
?> 
    <script type="text/javascript"> 
     window.location = "<?php echo $auth_url; ?>"; 
    </script> 

<?php 
    //header('Location: ' . $auth_url); 
?> 

這是在哪裏我在這裏重定向:

twitter authorization

當然後我得到重定向到窗口在我應該獲得訪問令牌和訪問令牌的祕密,並且也有效。

這裏就是使用$ _GET []我碰到下面的代碼http://lifetanstic.co.ke/AppRegister?oauth_token=zzzzz&oauth_verifier=zzzz

現在,在該網頁,當我運行下面的代碼,這是行不通的,但產生以下錯誤:

require_once('lib/codebird.php'); 
session_start(); 
\Codebird\Codebird::setConsumerKey("xxxx", "xxxx"); 
$cb = \Codebird\Codebird::getInstance(); 
// get the access token 
$reply = $cb->oauth_accessToken(array(
     'oauth_verifier' => $_GET['oauth_verifier'] 
)); 

var_dump($reply); 

當我傾倒的答覆,它在它下面的錯誤:

object(stdClass)#1 (3) { ["message"]=> string(21) "Invalid request token" ["httpstatus"]=> int(401) ["rate"]=> NULL } 

所以,我怎麼得到aouth_accessToken,本組oauth_token = ZZZZZ & oauth_verifier = zzzz url參數提供和一個用戶授權使用我的應用程序?

回答

0

所以讓我回答我的問題,是做了部分代碼沒有工作是這樣的:

require_once('lib/codebird.php'); 
session_start(); 
\Codebird\Codebird::setConsumerKey("xxxx", "xxxx"); 
$cb = \Codebird\Codebird::getInstance(); 
// get the access token 
$reply = $cb->oauth_accessToken(array(
     'oauth_verifier' => $_GET['oauth_verifier'] 
)); 

var_dump($reply); 

,我意識到,爲什麼在這裏https://github.com/jublonet/codebird-php codebird教程有一些我認爲這是不是必要的,但此刻正在恢復它,它的工作miracurously,這行代碼

$cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 

所以最終的代碼將是這樣的:

require_once('lib/codebird.php'); 
session_start(); 
\Codebird\Codebird::setConsumerKey("xxxx", "xxxxx"); 
$cb = \Codebird\Codebird::getInstance(); 
// get the access token 
$cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 
/*$reply = $cb->oauth_requestToken(array(
    'oauth_callback' => 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] 
));*/ 
$reply = $cb->oauth_accessToken(array(
     'oauth_verifier' => $_GET['oauth_verifier'] 
    )); 
//var_dump($reply); 

取消對最後一行顯示更詳細

to confirm the results, i posted to twitter successfully using this code: 
$cb->setToken($reply->oauth_token, $reply->oauth_token_secret); 
$params = array(
    'status' => '1Auto Post on Twitter with PHP http://goo.gl/OZHaQD #php #twitter @Maina_Wycliffe' 
); 
$reply = $cb->statuses_update($params); 
//var_dump($reply); 

和這裏的結果是證據,鳴叫URL->https://twitter.com/Maina_Wycliffe/status/595995951132712960

和微博本身 Successful Tweet 希望這會幫助你

+0

「人們不再在心情回答他人的問題「什麼? – ceejayoz

+0

我已經發布了3個問題,有人要麼編輯,給出加號或減號但不回答,我已經看到很多人沒有回答他們的問題,請不要冒犯 –

0

這真的很奇怪,因爲

$cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); 

應該不起作用。第一個變量不是OAuth訪問令牌。您需要從授權URL獲取該令牌 - 這就是本發明的目的。也許其他用戶可能想要使用您的應用程序。 即使我在我的腳本中有這行代碼,我不能發推文,因爲我得到了「無效標記」錯誤,所以對我來說,整個代碼鳥圖書館是一個混亂的沒有適當的文檔:(

相關問題