2016-03-13 3 views
0

Не получилось много тяги к сообществу разработчиков Twitter, поэтому я подумал, что я тоже отправлю сюда.Twitter TON API - cULR vs twurl 400 error (csv upload)

twurl/тонна-загрузка:

<- "POST https://ton.twitter.com/1.1/ton/bucket/ta_partner HTTP/1.1 
Accept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3 
Accept:/
User-Agent: OAuth gem v0.4.7 
Content-Type: text/comma-separated-values 
Content-Length: 12261 
X-Ton-Expires: Sun, 20 Mar 2016 16:12:39 GMT 
Authorization: OAuth oauth_body_hash=\"REDACTED\", oauth_consumer_key=\"REDACTED\", oauth_nonce=\"REDACTED\", oauth_signature=\"REDACTED\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"REDACTED\", oauth_token=\"REDACTED\", oauth_version=\"1.0\" 
Connection: close 
Host: ton.twitter.com 

локон:

POST /1.1/ton/bucket/ta_partner HTTP/1.1 
Host: ton.twitter.com 
Accept:/
Content-Length: 12261 
X-TON-Expires: Tue, 15 Mar 2016 16:12:30 GMT 
Authorization: OAuth oauth_consumer_key="REDACTED", oauth_nonce="REDACTED", oauth_signature_method="HMAC-SHA1", oauth_timestamp="REDACTED", oauth_version="1.0", oauth_token="REDACTED", oauth_signature="REDACTED%3D" 
Content-Type: text/comma-separated-values; boundary=------------------------25aceae34d75d12f 

Curl ответ:

HTTP/1.1 400 Bad Request 
< cache-control: no-cache 
< content-length: 0 
< date: Thu, 10 Mar 2016 16:12:23 GMT 
< server: tsa_a 
< set-cookie: guest_id=v1%3A145762634383261612; Domain=.twitter.com; Path=/; Expires=Sat, 10-Mar-2018 16:12:23 UTC 
< strict-transport-security: max-age=631138519 
< x-connection-hash: d6ebefd610faece8fe17da88738cac1f 
< x-content-type-options: nosniff 
< x-rate-limit-limit: 50 
< x-rate-limit-remaining: 48 
< x-rate-limit-reset: 1457627079 
< x-response-time: 13 
< x-tsa-request-body-time: 74 
* HTTP error before end of send, stop sending 

Первое отличие, которое я могу увидеть oauth_body_hash, но я не могу найти любую твиттерную документацию относительно того, что я должен положить туда. Существует также «граница», добавленная завитой.

Любые мысли о том, что мне здесь не хватает?

+0

Просьба уточнить некоторые из ожидаемых результатов и возможных ошибок. Этот вопрос, как он есть, выглядит так: «Вот мой хлам, вы выясните, что с ним не так», и, возможно, сообщество Twitter тоже так плохо реагирует. – GolezTrol

+0

Ожидаемые результаты будут «не ошибкой 400». Я выполнил их документацию, но, например, в https://dev.twitter.com/rest/ton/single-chunk в примере отсутствует oauth_body_hash. Я полагаю, что что-то не так, должно прыгать на всех, у кого есть рабочий тон/cURL-скрипт. И обычно, если была какая-то ошибка за 400 (ошибка, параметр xyz отсутствует или что-то еще), я бы использовал это как точку спрыгивания. – RHH

ответ

1

Похоже, я нашел решение.

Проблема в том, что граница = ------------------------ 25aceae34d75d12f в конце концов.

Twitter не принимает «application/x-www-form-urlencoded» (за https://dev.twitter.com/rest/ton).

Я использовал

$postdata = array(
      'file_contents' => '@'.$payload 
     ); 

вместе с установкой заголовка:

'Content-Type: ' . $content_type 

К сожалению, это, кажется, просто патч над тем, что PHP считает, что это будет х-WWW-форм-urlencoded.

Итак, мое решение было изменить полезную нагрузку:

$postdata = file_get_contents($payload); 

После того, как это было сделано, запросы сдвинуты на 201-х.

Боже, я надеюсь, что это поможет кому-то другому - это было удивительно раздражать.

+0

Да, пример, приведенный в документах, даже не будет работать корректно. –

+0

Это был мой опыт работы с документацией. Надеюсь, если вы разместите это здесь, у других людей будет более простой поиск ответа Google! – RHH

+0

Возможно, стоит опубликовать ссылку на ваш ответ на https://twittercommunity.com/, если вы еще этого не сделали. В документации, которую они могут сделать, могут быть разъяснения. –