微博最近刚刚做了如下强制性:
1)您必须通过oauth_callback
值的OAuth / request_token。 这不是可选的。 即使你有一个已经设置dev.twitter.com。 如果你正在做的带外的OAuth,通过oauth_callback=oob
。
2)你必须沿着传递oauth_verifier
您从执行回调接收或由最终用户到OAuth /是的access_token收到手工输入。 这是Twitter的线程( 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 /与Twython request_token?
2.你如何沿着传递oauth_verifier
?
我可以得到oauth_verifier
与从request.GET中的回调URL [“oauth_verifier”],但我不知道从那里使用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