2014-01-20 6 views
0

Это первый раз, когда я попытаюсь получить вызов REST для работы через POST из Firefox. Я создал маркер и строки Auth необходимые следующим образом:Twitter REST API call 401 Unothorized

oauth_consumer_key

oauth_nonce

oauth_signature

oauth_signature_method

oauth_timestamp

oauth_token

Есть ли счетчик заказов? Потому что я не могу понять, не пропал ли я что-нибудь еще. Вот мой запрос

https://api.twitter.com/1.1/search/tweets.json?q=&geocode=30.0444,31.2357,1km&until=2013-11-30&result_type=mixed&oauth_consumer_key=0xxxQ&oauth_nonce=bcbcxxx8&oauth_signature=pXXXglKjY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1390221337&oauth_token=2287933520-fuxxxR0&count=100 

Отклик:

401 Unouthorized 
{"errors":[{"message":"Could not authenticate you","code":32}]} 

Может кто-нибудь помочь, пожалуйста?

Спасибо,

EDIT 1

Как Майк предложил консоль, он на самом деле работает из консоли, но консоль просит вас войти, так что управляет авторизации, который прекрасно

Теперь, когда я знаю, что мой запрос работает, как добавить эти параметры в вызов $.ajax? Я попытался добавить следующее:

beforeSend : function(req) { 
req.setRequestHeader('Authorization', auth); 
}, 

где «Auth» является «OAuth oauth_consumer_key=...», но я получаю плохую ошибку запроса 400.

Идеи кого?

Спасибо,

ответ

0

Per authorizing a request страницы в Twitter, вам нужно передать в ваших параметрах OAuth через заголовок авторизации, а не в параметрах запроса.

Пример приведены на этой странице (поместить все поля OAuth на той же линии, никаких новых строк):

POST /1/statuses/update.json?include_entities=true HTTP/1.1 
Accept: */* 
Connection: close 
User-Agent: OAuth gem v0.4.4 
Content-Type: application/x-www-form-urlencoded 
Authorization: 
     OAuth oauth_consumer_key="xvz1evFS4wEEPTGEFPHBog", 
       oauth_nonce="kYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg", 
       oauth_signature="tnnArxj06cWHq44gCs1OSKk%2FjLY%3D", 
       oauth_signature_method="HMAC-SHA1", 
       oauth_timestamp="1318622958", 
       oauth_token="370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb", 
       oauth_version="1.0" 
Content-Length: 76 
Host: api.twitter.com 

status=Hello%20Ladies%20%2b%20Gentlemen%2c%20a%20signed%20OAuth%20request%21 
+0

Спасибо Майк ... Я нашел всю строку в странице моего приложения, я воссоздал мой маркер и регенерируют строку. Мое последнее намерение - установить это в запросе JQuery/Ajax как вызов REST, но пока я пытаюсь получить данные, чтобы убедиться, что он работает через Poster (Firefox сниффер). Я попытался добавить его в качестве заголовка, поставив в качестве значения значение «Авторизация как имя» и целую строку (в одной строке). Я все равно получаю ту же ошибку. – mzereba

+0

Не знаете, почему Авторизация не работает для вас. Убедитесь, что у вас есть первая строка «OAuth», плюс запятые между полями. Моя рекомендация состояла бы в том, чтобы попробовать [Консоль Твиттера] (https://apigee.com/console/twitter), чтобы поэкспериментировать с API. Убедитесь, что вы выбрали версию 1.1 в раскрывающемся списке. Он покажет вам, что отправлено в полезной нагрузке, параметрах запроса и заголовках. Я смог использовать этот инструмент и успешно позвонил в tweets.json. Также обратите внимание, что ваш пример выше имеет пустой параметр запроса (... tweets.json? Q = & geocode = 30.0444,31.2357,1km ...), который я не уверен, разрешен. –

+0

Спасибо @MikeDunker ... так что в консоли он работает и возвращает мне 200 OK (когда я проверяю подлинность, позволяя ему перенаправить меня на регистрацию перед отправкой запросов), поэтому я предполагаю, что мой звонок правильный. Но если я хочу включить их в запрос Ajax, это будет 'beforeSend: function (req) { req.setRequestHeader ('Authorization', auth); } ' или просто ' заголовок: { 'Accept-Encoding': "GZIP", 'Авторизация': идентификатор пользователя} ' – mzereba

0

Другой Гоча. Оказывается, стандартная реализация .NET UrlEncode выводит процентную кодировку в нижнем регистре. Похоже, что Twitter ожидает кодировку в нижнем регистре, возвращая 401, когда параметры являются строчными.

Вот некоторый код, чтобы установить, что до:

.net UrlEncode - lowercase problem

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