2013-01-03 90 views
0

我正在嘗試使用OAuth-PHP發佈使用PHP的推文,但我似乎無法弄清楚如何實現這一點。有沒有人有任何提示如何做到這一點,或我應該看看?OAuth-PHP和Twitter

我已經看到OAuth-PHP庫附帶的示例,但我不確定如何調整它以發佈推文。

我發現,沒有回答類似的問題至今仍爲:Sending a tweet with oauth-php?

我使用的代碼是這樣的:

define("TWITTER_CONSUMER_KEY", $this->config->Twitter->ConsumerKey); 
    define("TWITTER_CONSUMER_SECRET", $this->config->Twitter->ConsumerSecret); 

    define("TWITTER_OAUTH_HOST","https://api.twitter.com/"); 
    define("TWITTER_REQUEST_TOKEN_URL", TWITTER_OAUTH_HOST . "oauth/request_token"); 
    define("TWITTER_AUTHORIZE_URL", TWITTER_OAUTH_HOST . "oauth/authorize"); 
    define("TWITTER_ACCESS_TOKEN_URL", TWITTER_OAUTH_HOST . "oauth/access_token"); 
    define("TWITTER_PUBLIC_TIMELINE_API", TWITTER_OAUTH_HOST . "statuses/public_timeline.json"); 
    define("TWITTER_UPDATE_STATUS_API", TWITTER_OAUTH_HOST . "statuses/update.json"); 

    define('OAUTH_TMP_DIR', function_exists('sys_get_temp_dir') ? sys_get_temp_dir() : realpath($_ENV["TMP"])); 

    // Twitter test 
    $options = array('consumer_key' => TWITTER_CONSUMER_KEY, 'consumer_secret' => TWITTER_CONSUMER_SECRET); 
    OAuthStore::instance("2Leg", $options); 

    try { 
     $request = new OAuthRequester(TWITTER_UPDATE_STATUS_API, "POST", array('status' => $msg)); 
     $result = $request->doRequest(); 
    } 
    catch(OAuthException2 $e) { 
     echo "Exception: " . $e->getMessage(); 
    } 

這就是我想要做的,但我得到一個例外: 請求代碼401失敗:{「request」:「/ statuses/update.json」,「error」:「Invalid/expired Token」}

由於我是OAuth的新手,重要的一步,不知道它...

任何線索?

任何幫助將不勝感激。

+0

PEAR的Services_Twitter可能有幫助:http://pear.php.net/Services_Twitter – MECU

回答

0

我曾經使用默認的PHP Oauth庫(PHP: Oauth - Manual)編寫了一個腳本。我認爲這可能會有用。當然,您仍然需要更改CONSUMER-KEY,CONSUMER_SECRET,ACCESS_TOKEN和ACCESS_TOKEN_SECRET。

try { 
    $oAuth = new OAuth(
     CONSUMER_KEY, 
     CONSUMER_SECRET, 
     OAUTH_SIG_METHOD_HMACSHA1, 
     OAUTH_AUTH_TYPE_URI); 
    $oAuth->setToken(ACCESS_TOKEN, ACCESS_TOKEN_SECRET); 
    $oAuth->fetch('https://api.twitter.com/1.1/statuses/update.json', array(
     'status' => 'This is a test'), OAUTH_HTTP_METHOD_POST); 
    var_dump($oAuth->getLastResponse()); 
    exit(); 
} catch (OAuthException $E) { 
    exit(); 
} 

我注意到您的代碼是您沒有使用訪問令牌或訪問令牌密鑰(這是完成握手所必需的)。

在閱讀oauth-php文檔時,我發現了類似OAuthRequester::requestAccessToken();的東西。也許這是你應該尋找的東西。

+0

使用默認的PHP OAuth庫不是一個選項,因爲這似乎沒有安裝在我的共享主機提供商。我認爲我可能需要的是setAccessToken,因爲我有權限訪問令牌,但我不明白在哪裏以及如何設置這些令牌...... – BlunT

0

沒關係,我剛剛使用了另一個OAuth實現,以及一個twitter oauth庫。

這是張貼,這是重要的。

我只是想要一個獨立的圖書館,我可以用於幾個社交網絡,我會嘗試使用這一個來實現與facebook一樣的事情。