2013-06-12 39 views
6

我使用下面的代碼來檢索我的推文和echo json。這工作正常。如何使用twitter 1.1 api和twitteroauth發佈推文

<?php 
session_start(); 
require_once('includes/twitter/twitteroauth.php'); 

$twitteruser = "xxxxxx"; 
$notweets = 3; 
$consumerkey = "xxxxxxx"; 
$consumersecret = "xxxxxx"; 
$accesstoken = "xxxxxxxx"; 
$accesstokensecret = "xxxxxx"; 

$connection = new TwitterOAuth($consumerkey, $consumersecret, $accesstoken, $accesstokensecret); 
$tweets = $connection->get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=".$twitteruser."&count=".$notweets); 

echo json_encode($tweets); 
?> 

現在我想用類似的代碼發送推文,但它不起作用。我不確定發送的語法是否正確。所以請別人幫助我。

<?php 
session_start(); 
require_once('includes/twitter/twitteroauth.php'); //Path to twitteroauth library 

$twitteruser = "xxxxxx"; 
$notweets = 3; 
$consumerkey = "xxxxxxx"; 
$consumersecret = "xxxxxx"; 
$accesstoken = "xxxxxxxx"; 
$accesstokensecret = "xxxxxx"; 

// start connection 
$connection = new TwitterOAuth($consumerkey, $consumersecret, $accesstoken, $accesstokensecret); 
//message 
$message = "Hi how are you"; 
//send message 
$status = $connection->post('https://api.twitter.com/1.1/statuses/update.json', array('status' => $message)); 
?> 

回答

14

我在使用twitteroauth.php在新的API破壞它時發佈推文。您正確使用$connection->post,但似乎該功能不再有效。我發現最簡單的解決辦法是換出與J7mbo的Twitter的API-PHP文件twitteroauth.php新1.1 API:

https://github.com/J7mbo/twitter-api-php

這是他的一步一步的指示使用它。我想你會驚喜地發現,你可以留下大部分代碼是相同的,只是切換twitteroauth的電話,他在功能適當的地方調用:

Simplest PHP example for retrieving user_timeline with Twitter API version 1.1

他沒有提供具體的例如張貼鳴叫,但在這裏的就是您所需要的那個功能:

$url = 'https://api.twitter.com/1.1/statuses/update.json'; 
$requestMethod = 'POST'; 
$postfields = array(
    'status' => 'Hi how are you'); 
echo $twitter->buildOauth($url, $requestMethod) 
      ->setPostfields($postfields) 
      ->performRequest(); 

有了新的Twitter的API,你將不再需要提供您的用戶名/密碼。身份驗證令牌將處理所有事情。

5

只需使用例如:

$connection->post('statuses/update', array('status' =>$message)); 
+0

我們是否有推特ID和時間作爲迴應? –

+0

我想通過另一個'網址'參數'狀態'是可能的 – RaviPatidar

-2

的問題是關於enconding的價值需要被enconde:

$status = $connection->post('https://api.twitter.com/1.1/statuses/update.json', array('status' => rawurlencode($message))); 

如果你在圖書館裏檢查recomended https://github.com/J7mbo/twitter-api-php

那他們的方式編碼參數