Проблема API Twitter: OAuth-запрос токена с использованием GET работает, POST не работает - PullRequest
0 голосов
/ 26 сентября 2010

Я использую Twitter API для OAuth.

Я получил операцию Request Token без проблем, используя GET.

Однако, когда я делаю то же самое, используя POST, выдается ошибка «Не удалось проверить подпись oauth».

Вот различные варианты скручивания, которые я использую:

curl_setopt($ch, CURLOPT_URL, ''.$url_post_str.'');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vars_arr);
curl_setopt ($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

Не могли бы вы помочь?

Спасибо.

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Я понял это немного позже.

Оказывается, поскольку я использовал массив для полей записей, т. Е.

curl_setopt($ch, CURLOPT_POSTFIELDS, **$post_vars_arr**);

, тип содержимого формы был multipart / form-данные, которые не поддерживаются Twitter OAuth API.

Поэтому мне пришлось развернуть этот массив в строку запроса и передать его в тот же curl_setopt, т.е.

curl_setopt($ch, CURLOPT_POSTFIELDS, **$post_vars_str**);

Из того, что яСледует понимать, что когда вы используете строку запроса вместо массива, тип содержимого формы будет application / x-www-form-urlencoded (который поддерживается Twitter API), а не multipart /данные формы .

И вот как я это получил.Я надеюсь, что это помогает кому-то еще.

0 голосов
/ 29 декабря 2010

Проверьте системные часы вашего клиента: прочитайте http://blainegarrett.com/2009/07/14/failed-to-validate-oauth-signature-and-token-on-twitter-oauth-check-your-cloc/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...