11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DjangoでOauth認証をしたあとにTwitter APIを叩く

Last updated at Posted at 2017-04-02

発端

  • TwitterのクライアントをDjangoで作ろうと思った時にOauth認証を用いてTwitterでログインを実装する記事はたくさんありました

  • http://qiita.com/y-tsutsu/items/4c9edec8fbefb3116bf6

  • http://qiita.com/ariarijp/items/2d63e4fe69be3b64998d

  • など

  • しかし、私がやりたかったことは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_DJANGOUser social authsに居ました
qiita0000.png
  • どうやらUserSocialAuthモデルを参照すればいいようです
  • social_djangoのモデルとしてUserSocialAuthが存在するので

from social_django.models import UserSocialAuth
UserSocialAuth.objects.get(クエリ).access_token

でoauth_tokenとsecretが含まれている辞書が取得できますのでTwitterAPIを叩くことができます

11
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?