発端
-
TwitterのクライアントをDjangoで作ろうと思った時にOauth認証を用いてTwitterでログインを実装する記事はたくさんありました
-
など
-
しかし、私がやりたかったことはOauth認証をしたときに発行されたoauth_tokenとsecretを用いてTwitterAPIを叩くことでした
-
ググり方が悪いのか記事を見つけることが出来ず悪戦苦闘していましたが終止符を打つ事ができたので報告がてら記事にします
-
`social-auth-app-djangoというライブラリを使わせていただきました
DjangoでOauth認証をすると何が起こるか
- Twitterのサイトから戻ってきたときのログを見てみると
/complete/twitter
というパスにoauth_tokenとsecretがクエリとして追加されGETリクエストが行われていることがわかります - 当初はこの
complete/twitter
というパスにアクセスが行われたときに走るメソッドをオーバーライドかなにかするものだと思っていたのですが違うようです - DjangoでOauth認証をするとUserモデルのオブジェクトが生成されます
-
host/admin
からスーパーユーザでログインしユーザ管理を見てみるとたしかにTwitterのscreennameでユーザが生成されていました - あれ?oauth_tokenは?
-
SOCIAL_DJANGO
のUser social auths
に居ました
- どうやらUserSocialAuthモデルを参照すればいいようです
- social_djangoのモデルとしてUserSocialAuthが存在するので
from social_django.models import UserSocialAuth
UserSocialAuth.objects.get(クエリ).access_token
でoauth_tokenとsecretが含まれている辞書が取得できますのでTwitterAPIを叩くことができます