Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

発端

  • 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を叩くことができます

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした