2013-06-12 27 views
6

Tôi sử dụng mã bên dưới để truy xuất tweet của tôi và json echo. Điều này hoạt động tốt.cách đăng tweet bằng cách sử dụng twitter 1.1 api và 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); 
?> 

Bây giờ tôi muốn gửi một tweet bằng cách sử dụng mã tương tự nhưng nó không hoạt động. Tôi không chắc liệu cú pháp gửi có chính xác hay không. vì vậy xin vui lòng ai đó giúp tôi.

<?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)); 
?> 

Trả lời

14

Tôi đã sử dụng twitteroauth.php để đăng tweet khi bản thân API mới phá vỡ nó. Bạn đang sử dụng chính xác $connection->post, nhưng dường như chức năng đó không hoạt động nữa. Giải pháp đơn giản nhất tôi thấy được để trao đổi trên các twitteroauth.php với tập tin twitter-api-php J7mbo của cho 1.1 API mới:

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

Dưới đây là mình hướng dẫn từng bước để sử dụng nó. Tôi nghĩ rằng bạn sẽ ngạc nhiên khi thấy bạn có thể để lại hầu hết các mã của bạn như nhau, chỉ cần chuyển các twitteroauth gọi với chức năng của mình gọi ở những nơi thích hợp:

Simplest PHP example for retrieving user_timeline with Twitter API version 1.1

Ông không cung cấp cụ thể ví dụ về việc đăng một tweet, nhưng đây là những gì bạn cần cho chức năng đó:

$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(); 

Với API twitter mới, bạn sẽ không cần cung cấp tên người dùng/mật khẩu của mình. Mã xác thực sẽ xử lý mọi thứ.

5

Chỉ cần sử dụng các ví dụ:

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

Chúng tôi có nhận được id tweet và thời gian như một phản ứng? –

+0

Tôi muốn chuyển thông số 'url' khác với 'trạng thái' là có thể – RaviPatidar

-2

Vấn đề là về enconding giá trị cần phải được enconde:

Ví dụ

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

Nếu bạn kiểm tra trong thư viện recomended https://github.com/J7mbo/twitter-api-php

Bằng cách đó họ mã hóa các thông số