Итак, я настроил твиттер-приложение, чтобы люди могли отвечать на твиты внутри моего собственного приложения. У меня есть 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-адресом, как в примере выше.