私は Django アプリを構築しており、twython-django を使用して、フォームを送信するときに Twitter ユーザーを認証しようとしています。この例で提案されているように、views.py、urls.py、およびmodels.pyファイルを編集しようとしましたhttps://github.com/ryanmcgrath/twython-django/tree/master/twython_django_oauthしかし、私は単にそれを推測していますだから私はそれがうまくいかない理由だと確信しています。
これを機能させる方法を教えてください。私は Twitter ラッパーにまったく慣れていないので、どんな助けでも大歓迎です。
私が達成しようとしている流れ:
- ユーザーがフォームからメッセージを送信する
- [送信] ボタンを押すと、ユーザーは Twitter アカウントの認証を求められます
- ユーザーのメッセージ、Twitter の名前、Twitter の画面名、profile_image_url、followers_count がデータベースに保存されます (Heroku Postgres を使用しています)。
- ユーザーのプロフィール画像、名前、screen_name、およびメッセージが (Twitter のような) フィードの index.html に出力されます。
私のviews.py:
def logout(request, redirect_url=settings.LOGOUT_REDIRECT_URL):
django_logout(request)
return HttpResponseRedirect(request.build_absolute_uri(redirect_url))
def submit(request):
twitter = Twython(
twitter_token=settings.TWITTER_KEY,
twitter_secret=settings.TWITTER_SECRET,
callback_url=request.build_absolute_uri(reverse('alpha.views.submit'))
)
auth_props = twitter.get_authentication_tokens()
request.session['request_token'] = auth_props
return HttpResponseRedirect(auth_props['auth_url'])
form = MessageForm(request.session.get('message'))
if form.is_valid():
new_message = form.save()
return HttpResponseRedirect('/')
else:
request.session['message'] = request.POST
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'],
)
authorized_tokens = twitter.get_authentication_tokens()
try:
user = User.objects.get(username = authorized_tokens['screen_name'])
except User.DoesNotExist:
user = User.objects.create_user(authorized_tokens['screen_name'], authorized_tokens['oauth_token_secret'])
profile = Message()
profile.user = user
profile.name = name
profile.profile_image_url = profile_image_url
profile.oauth_token = authorized_tokens['oauth_token']
profile.oauth_secret = authorized_tokens['oauth_token_secret']
profile.save()
user = authenticate(
username = authorized_tokens['screen_name'],
password = authorized_tokens['oauth_token_secret']
)
login(request, user)
return HttpResponseRedirect(redirect_url)
免責事項: 私は初心者なので、上記のコードはおそらく完全に混乱しています!