Twitter только недавно сделал следующее обязательным:Как передать oauth_callback значение OAuth/request_token с Twython
1) Вы должны пройти значение oauth_callback
для OAuth/request_token. Это необязательно. Даже если у вас уже есть на dev.twitter.com. Если вы делаете вне OAuth, пройдите oauth_callback=oob
.
2) Вы должны пройти по oauth_verifier
, который вы либо получили от вашего выполненного обратного вызова, либо что вы получили ручной ввод вашего конечного пользователя в oauth/access_token. Вот щебет нить (https://dev.twitter.com/discussions/16443)
Это заставило Twython get_authorized_tokens
бросить эту ошибку:
Request: oauth/access_token
Error: Required oauth_verifier parameter not provided
У меня есть два вопроса:
1. Как вы передать значение oauth_callback
в oauth/request_token с Twython?
2. Как вы проходите вдоль oauth_verifier
?
Я могу получить oauth_verifier
с запросом.GET ['oauth_verifier'] из URL-адреса обратного вызова, но я понятия не имею, что делать с помощью Twython. Я ищу везде, но не нашел ответов, поэтому решил опубликовать это. Это мой первый пост, так будьте добры;)
Вот мой код:
def register_twitter(request):
# Instantiate Twython with the first leg of our trip.
twitter = Twython(
twitter_token = settings.TWITTER_KEY,
twitter_secret = settings.TWITTER_SECRET,
callback_url = request.build_absolute_uri(reverse('account.views.twitter_thanks'))
)
# Request an authorization url to send the user to
auth_props = twitter.get_authentication_tokens()
# Then send them over there
request.session['request_token'] = auth_props
return HttpResponseRedirect(auth_props['auth_url'])
def twitter_thanks(request, redirect_url=settings.LOGIN_REDIRECT_URL):
# Now that we've got the magic tokens back from Twitter, we need to exchange
# for permanent ones and store them...
twitter = Twython(
twitter_token = settings.TWITTER_KEY,
twitter_secret = settings.TWITTER_SECRET,
oauth_token = request.session['request_token']['oauth_token'],
oauth_token_secret = request.session['request_token']['oauth_token_secret'],
)
# Retrieve the tokens
authorized_tokens = twitter.get_authorized_tokens()
# Check if twitter user has a UserProfile
try:
profile = UserProfile.objects.get(twitter_username=authorized_tokens['screen_name'])
except ObjectDoesNotExist:
profile = None
Ваш 'reverse ('account.views.twitter_thanks')' неверен, он должен быть 'reverse ('account: twitter_thanks')'. Можете ли вы опубликовать у вас коды URL – catherine
@catherine На самом деле 'reverse ('account.views.twitter_thanks')' отлично работает. Вот URL: 'url (r '^ register/twitter/thanks /? $', 'Account.views.twitter_thanks', name = 'twitter_thanks')'. Приятно знать короткий способ написания обзора, хотя, спасибо за это. – BuddyTeal
Откуда у вас эти коды? На самом деле, ваши коды совпадают с моим входом в Twitter, и он отлично работает. – catherine