2013-06-13 5 views
3

Я меняю свой PHP-код, чтобы быть совместимым с новым API, и я застрял в update_with_media. Это мой код:Twitter api 1.1 update_with_media

$image = constant('PATH_UPLOAD').$db_data['post_image']; 
$connection = new TwitterOAuth(constant('CONSUMER_KEY'), constant('CONSUMER_SECRET'), $db_data['tw_oauth_token'], $db_data['tw_oauth_secret']);   
$content = $connection->OAuthRequest('https://api.twitter.com/1.1/account/verify_credentials.json', 'GET', array()); 
$twitterInfo = json_decode($content);      
$resp_tw = $connection->OAuthRequest('https://api.twitter.com/1.1/statuses/update_with_media.json', 'POST', 
      array(
       'status' => html_entity_decode($db_data['post_text'],ENT_QUOTES,'UTF-8'),    
       'media[]' => "@{$image}" 
      )   
      );       

И это возвращает

{"errors":[{"code":189,"message":"Error creating status"}]} 

Что может быть проблема/что я делаю не так?

ответ

7

вы можете попробовать, как это:

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

$response = $tmhOAuth->request('POST', $tmhOAuth->url('1.1/statuses/update_with_media'), 
array(
     'status' => $message, 
     'media[]' => file_get_contents($image) 
)); 
if ($response != 200) { 
    //Do something if the request was unsuccessful 
} 

есть мой код тест https://twitter.com/wallapps/status/357137553691906048

+0

Привет, какая версия thmOAuth вы используете? Я борюсь с автоматическими твитами в течение нескольких дней, и даже этот код я не могу нормально работать. – ahojvole

+0

@ahojvole here bro https://github.com/themattharris/tmhOAuth – Sendy

1

Хотя речь идет несколько месяцев, я думал, что ответить на это, так как я потратил несколько часов на создание update_with_media и не смогли найти удовлетворительные ответы в Интернете.

Сообщения об ошибках Twitter API, к сожалению, не так специфичны. Я был в состоянии выяснить ошибки Фолля твиттере:

  1. «ошибка не может аутентифицировать вас» - вероятно, означает, что ваша базовая строка OAuth подпись не является правильным

  2. «ошибка неправильно или отсутствует URI» - вероятно, означает, что вы не строго следуете формату, ожидаемому Twitter в органе запроса. Может быть что-то просто отсутствует \ п в вашем теле запроса

  3. «Ошибка создания состояния - вероятно, означает, что ваш текст статуса кодируется, когда оно не должно быть в теле запроса запроса многочастному/форм-данных
  4. «Ошибка внутренней ошибки» - это не показывает ничего полезного. Вероятно, это означает, что у вас есть некоторые данные, которые не закодированы, когда твиттер ожидает, что это будет или наоборот. Это также может означать, что вы не включили тип кодирования в тело запроса

Чтобы update_with_media работу, эти советы могут помочь:

  1. Запрос должен иметь тип содержимого многочастных/форм-данных

  2. Тело запроса должно содержать два элемента Twitter ожидает медиа [] и статуса в правильном формате (RFC 2388)

  3. В Кроме того, сервер Twitter ожидает \ r \ n (CR LF) после каждой части тела запроса. Пропуск этого приводит к тому, что Twitter возвращает сообщение об ошибке
  4. Данные носителя [] должны быть закодированы в base64, а раздел содержания в разделе запроса должен содержать кодирование содержимого-передачи
  5. Базовая строка подписи OAuth должна быть: (см. OAuth 1.0A спецификации для подписи) & Все параметры oauth_ (имя = значение) в заголовке Auth вашего объекта запроса в алфавитном порядке, отделенные & и закодированные
Смежные вопросы