2013-12-24 3 views
1

Я хочу получать прямые сообщения из Twitter с помощью TwitterAPIExchange.php. Настройки в моем приложении: запись/чтение и прямые сообщения. Что мне не хватает? С РождествомПолучение прямых сообщений twitter api

Обновленный код

$settings = array(
    'oauth_access_token' => $accessToken, 
    'oauth_access_token_secret' => $accessTokenSecret, 
    'consumer_key' => $consumerKey, 
    'consumer_secret' => $consumerKeySecret 
); 
$i = 0; 
$cursor = -1; 

do { 
    $url = 'https://api.twitter.com/1.1/direct_messages.json'; 
    $getfield = '?cursor='.$cursor.'since_id=240136858829479935&count=1'; 
    $requestMethod = 'GET'; 
    $twitter = new TwitterAPIExchange($settings); 
    $response = $twitter->setGetfield($getfield) 
         ->buildOauth($url, $requestMethod) 
         ->performRequest(); 

    $response = json_decode($response, true); 

    if (!empty($response["next_cursor_str"])) { 
    $next_cursor = $response["next_cursor_str"]; 
    } else { 
    $next_cursor = 0; 
    } 

    $errors = $response["errors"]; 

    if (!empty($errors)) { 
    foreach($errors as $error){ 
     $code = $error['code']; 
     $msg = $error['message']; 
     echo "<br><br>Error " . $code . ": " . $msg; 
    } 
    $cursor = 0; 
    } else { 
     $users = $response['tweets']; 
     foreach($users as $user) { 
      echo 'tweet:' . $user['text'] . '</br>'; 
     } 
    } 
    if ($next_cursor != null) { 
    $cursor = $next_cursor; 
    } 
} while ($cursor != 0); 

решаемая. Пожалуйста, прочтите этот код, который может вам помочь.

ini_set('display_errors', 1); 
require_once('TwitterAPIExchange.php'); 
$settings = array( 
    'oauth_access_token' => "xxx", 
    'oauth_access_token_secret' => "xxx", 
    'consumer_key' => "xxx", 
    'consumer_secret' => "xxx"); 
    $url = 'https://api.twitter.com/1.1/direct_messages.json'; 
    $getfield = '?since_id=240136858829479935&count=1'; 
    $requestMethod = 'GET'; 
$twitter = new TwitterAPIExchange($settings); 
$string = json_decode($twitter->setGetfield($getfield) 
      ->buildOauth($url, $requestMethod) 
      ->performRequest(),$assoc = TRUE); 

echo "<h3>Mensajer directos</h3>";   
foreach($string as $items) 
{ 
      $url = 'https://api.twitter.com/1.1/direct_messages/show.json?'; 
      $requestMethod = 'GET'; 
      $getfields = array('id' => $items['id']); 
      $twitter = new TwitterAPIExchange($settings);   
      $do = $twitter->setGetfield($getfield) 
          ->buildOauth($url, $requestMethod)       
          ->performRequest(); 
      echo "<strong>Teet:</strong> ".$items['text']."<br />"; 
      var_dump(json_encode($items, true)); 
     } 
+0

Что такое выход? Любые ошибки? – DaGardner

+0

любой erro .. вы можете увидеть это в: http: //turpin.es/turpin/direct.php – user2183923

+0

Я обновил код с более подробной информацией. – user2183923

ответ

1

Одна яркая ошибка в коде, которую я вижу здесь, это элементы, которые не являются объектом ответа API-интерфейсов direct_messages. Это «твиты».

https://dev.twitter.com/docs/api/1.1/get/direct_messages и искать Response Object

Предполагая, что ваше приложение позаботилась о предоставлении необходимых разрешений пользователю доступа прямых сообщений, вы можете попробовать модифицировать свой цикл для следующим образом:

... 
foreach ($string ['tweets'] as $items) { 
    echo $items['text']; 
    ?> 

$assoc = TRUE уже занимается преобразованием объекта в ассоциативный массив. Теперь вам нужно выполнить итерацию по объектам ответа, содержащимся в этом массиве.

+0

Спасибо за ваш ответ. Я обновил код, но получаю: Ошибка 32: Не удалось аутентифицировать вас – user2183923

+0

, это может быть потому, что массив $ settings. Можете ли вы проверить, установлены ли эти параметры в порядке - проверьте на значения из вашего приложения @ https://dev.twitter.com. настройки $ = массив ( 'oauth_access_token' => $ маркер доступа, 'oauth_access_token_secret' => $ accessTokenSecret, 'CONSUMER_KEY' => $ consumerKey, 'consumer_secret' => $ consumerKeySecret – PopoFibo

+0

также, пожалуйста, проверьте, если приложение у меня есть права на запись. Эти 2 соображения разрешили бы вашу проблему аутентификации. – PopoFibo

Смежные вопросы