Ошибка отмены обратного вызова Oauth в Twitter - PullRequest
0 голосов
/ 17 октября 2011

Итак, я настроил твиттер-приложение, чтобы люди могли отвечать на твиты внутри моего собственного приложения. У меня есть URL обратного вызова, и когда я не пытаюсь переопределить его, все идет хорошо. Однако теперь у меня возникла проблема с получением переопределения обратного вызова для работы, приложение работает на нескольких поддоменах и серверах в зависимости от того, на какой стадии разработки оно находится, и я хотел бы переопределить обратный вызов для текущего URL.

Когда я отменяю обратный вызов и твиттер пытается отправить пользователя обратно на эту страницу, я попадаю на страницу, которая говорит: «Извините, эта страница не существует!»

и URL выглядит примерно так

https://twitter.com/oauth/http%3A//127.0.0.1/authtwitter%3FtwitterCallback?oauth_token=VALUE&oauth_verifier=VALUE

и вот мой код Python, использующий эту библиотеку для oauth: https://github.com/simplegeo/python-oauth2

    #SETUP TWITTER AUTHORIZATION OBJECT
    request_token_url = 'http://twitter.com/oauth/request_token'
    access_token_url = 'http://twitter.com/oauth/access_token'
    authorize_url = 'http://twitter.com/oauth/authenticate'

    consumer = oauth.Consumer(consumer_key, consumer_secret)
    client = oauth.Client(consumer)

    #get request token
    callbackURL = urllib.quote("%s?twitterCallback" % self.request.url)

    resp, content = client.request(request_token_url, "POST", body=urllib.urlencode({'oauth_callback':callbackURL}))
    if resp['status'] != '200':
            raise Exception("Invalid Response %s." %resp['status'])

    request_token = dict(urlparse.parse_qsl(content))

    tmpldict['callbackURL'] = callbackURL
    tmpldict['oauth_token'] = request_token['oauth_token']  
    tmpldict['twitauthurl'] = "%s?oauth_token=%s" % ( authorize_url, request_token['oauth_token'] )                               

    qargs=urlparse_qs(self.request.url,True,False)

    if 'oauth_verifier' in qargs:
            oauth_verifier = qargs['oauth_verifier'][0]
    else:
            oauth_verifier = None

    if oauth_verifier:
            token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
            token.set_verifier(oauth_verifier)

            client = oauth.Client(consumer,token)

            resp, content = client.request(access_token_url, "GET")
            access_token = dict(urlparse.parse_qsl(content))

Текущий поток для пользователя

URL авторизации клика

Нажмите Разрешить доступ в Твиттере

Дисплеи Twitter: перенаправление вас обратно в приложение

Невозможно найти страницу с URL-адресом, как в примере выше.

1 Ответ

4 голосов
/ 18 октября 2011

Немного быстрых вещей ...

Ваши URL устарели и устарели и не функционируют так же, как правильные URL.Используйте SSL и поддомен API:

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

Убедитесь, что при отправке динамического значения oauth_callback шагу oauth / request_token он правильно равензакодирован.Кроме того, убедитесь, что у вас есть обратный вызов на основе HTTP для записи вашего приложения на dev.twitter.com/apps

...