Параметр oauth_callback в Твиттере игнорируется! - PullRequest
8 голосов
/ 31 мая 2010

Я пытаюсь заставить аутентификацию Twitter работать на моем сайте ASP.NET. Когда вы создаете приложение на веб-сайте Twitter, вы должны указать URL-адрес обратного вызова, который для удобства я установил http://mydomain.com

Я прочитал спецификацию oAuth 1.0a, и чтобы переопределить этот URL обратного вызова своим собственным, вы должны отправить параметр oauth_callback в фазе request_token (конечно же, в кодировке URL).

Так что URL моего запроса выглядит так:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

Предположительно, если все идет по плану, в ваших данных ответов вы должны получить новый параметр oauth_callback_confirmed = true в дополнение к вашим токенам и секретным параметрам токена.

Однако мой ответ звучит так: oauth_token = MYTOKEN & oauth_token_secret = MYTOKENSECRET

Я знаю, что я не дал вам, ребята, наибольшее количество денег, но я в своем уме, почему я не получаю параметр oauth_callback_confirmed. Без этого мое приложение по умолчанию возвращается к URL-адресу обратного вызова, жестко заданному на веб-сайте Twitter. Пожалуйста, если кто-нибудь может мне помочь, я буду вечно благодарен!

Спасибо, A.

Ответы [ 3 ]

9 голосов
/ 28 июля 2010

Я прочитал спецификацию oAuth 1.0a и переопределить этот URL обратного вызова с вашим свой собственный вы должны отправить Параметр oauth_callback в фаза request_token (закодированная в URL Конечно).

Так что URL моего запроса выглядит так:

http://twitter.com/oauth/request_token?oauth_callback=http%3A%2F%2Fmydomain.com%2Ftwittercallback

только то, что вы читаете спецификацию, не означает, что TWITTER ее читает. : Р

шучу - это по сути правильно - но способ, которым твиттер любит получать эти данные, немного отличается (и не очень хорошо документирован).

способ получения oauth_callback для подтверждения заключается в следующем: укажите oauth_callback в параметрах функции запроса, а НЕ в URL.

Пример Python (с использованием oauth2):

''' Create our client.'''

client = oauth.Client(consumer)

''' do the request '''

resp, content = client.request(request_token_url,"POST",body=urllib.urlencode({'oauth_callback':callbackURL}))


''' note that it's called "body" in this particular OAuth function for Client but in OAuth Request object it's called "parameters."  YMMV depending on programming language/ library of course. '''

это ТАКЖЕ единственный способ вернуть мне oauth верификатор . предположительно, не нужно указывать URL-адрес обратного вызова каждый раз, поскольку мы предоставляем его в настройках приложения ... но опыт, по-видимому, указывает на иное.

наконец, имейте в виду, что на третьем этапе вы должны сделать то же самое СНОВА - на этот раз с параметрами oauth_verifier и URL обратного вызова в параметрах.

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

удачи!

J

1 голос
/ 28 ноября 2010
<?php
    // oauth-php example
    $token = OAuthRequester::requestRequestToken(
                $consumer_key,
                $user_id,
                array('oauth_callback'=>  urlencode($callback_uri))
             );
?>
1 голос
/ 31 мая 2010

Я использовал это руководство , чтобы настроить мой ПК для использования в качестве места обратного вызова. По сути, вы настраиваете свой файл hosts определенным образом, очищаете кеш и добавляете пару значений реестра Firefox. В конце, когда вы отлаживаете oauth-вызов, перенаправление возвращается на ваш локальный ПК.

Как я уже сказал, это сработало для меня.

...