2012-01-29 62 views
5

我用馬特·哈里斯的Twitter OAUTH庫(https://github.com/themattharris/tmhOAuth)用我的鑰匙和令牌替換默認數據試圖響應代碼,但由於某種原因我無法獲得有效的回覆代碼。Twitter的OAUTH - 返回「0」

的網址,我用一個端口(8888)結束測試,但我不知道這是用它做。我正在拖拽PHP日誌,並且沒有錯誤。

$tweet_text = 'Hello world!'; 
print "Posting...\n"; 
$result = post_tweet($tweet_text); 
print "Response code: " . $result . "\n"; 

function post_tweet($tweet_text) { 

    require_once('tmhOAuth.php'); 

    $connection = new tmhOAuth(array(
    'consumer_key' => '(hidden)', 
    'consumer_secret' => '(hidden)', 
    'user_token'  => '(hidden)', 
    'user_secret'  => '(hidden)', 
)); 

    $connection->request('POST', 
    $connection->url('1/statuses/update'), 
    array('status' => $tweet_text)); 

    return $connection->response['code']; 
} 

有沒有人有什麼想法?

非常感謝。

回答

1

如果用https://github.com/themattharris/tmhOAuth/blob/master/examples/tweet.php比較你的代碼可能需要更改的樣子:

$code=$connection->request('POST', ...); 
return $code; 

然而,看着源代碼,揭示了兩件事情。首先,您的代碼應該與此一樣好,因爲$this->response['code']設置爲返回的值。其次,那個函數(實際上是curlit())也可以返回void。當它確定response['code']未定義。 (這看起來像是一個有前途的推特庫,直到我看到那個設計錯誤。)

探測更進一步,它只會在$this->config['prevent_request']存在且爲真時返回void。你沒有這樣做,我們已經走了一圈,不能解釋你所看到的行爲。

所以,我的下一個故障排除步驟是把error_reporting(E_ALL|E_NOTICE)在頂部,然後檢查錯誤日誌以獲取更多線索。撥打request()後,請撥打print_r($connection->response),看看您還有什麼。

14

我有這個問題,它在12月到最近的變化是由於2011:

「拖欠CURLOPT_SSL_VERIFYPEER到真正的」

如果你傾倒$連接 - >響應,達倫建議,你可以看到一個錯誤例如這一個其中我有:

串(165)「的錯誤設置證書驗證地點:」

要麼確保證書文件cacert.pem到位,或禁用SSL_VERIFYPEER。

我敢打賭,這將解決您的問題(雖然它可能不是最安全的解決方案):

$connection = new tmhOAuth(array(
    'consumer_key'   => '(hidden)', 
    'consumer_secret'  => '(hidden)', 
    'user_token'   => '(hidden)', 
    'user_secret'   => '(hidden)', 
    'curl_ssl_verifypeer' => false 
)); 

更新2015年2月

這個答案今天回頭,我意識到建議人們將curl_ssl_verifypeer設置爲false並不是一個很好的答案(在這一點上,你不再可以確定你正在與Twitter交談,所以實際上這是一個可怕的答案)。相反,採取我給出的其他建議,並確保適當的根CA證書文件(cacert.pem)已到位。

+0

感謝邁克,我的文件中缺少的那一行,最後它的工作:) – 2014-05-02 06:11:18

1

看起來你需要確保你有最新的證書。

According to TMH's git repo:

版本0.60硬化庫的安全性和拖欠curl_ssl_verifypeer爲true。由於某些託管提供商不提供最新的證書根文件,它現在已包含在TMH的存儲庫中。如果版本過期或者您更願意自己下載證書根目錄,您可以從以下位置獲取它們:http://curl.haxx.se/ca/cacert.pem

在升級您使用的tmhOAuth版本之前,請務必驗證您的服務器上的SSL處理工作是否正常運行examples/verify_ssl.php腳本。