旧それなりブログの跡地、画像やスタイルやJSなどが壊れてることがあります。

DjangoでTwitterのOAuth認証をする

2013年1月30日

DjangoでTwitterアカウントによるOAuth認証をするための方法まとめと実装例です
あまりまとまっても理解してもいないので、走り書き程度の駄文でスマソ

環境は、Django-1.4.3、Python-2.7.3、tweepy-1.13

もしかして: django-allauth

django-allauth という、
各種ソーシャルアカウントによる認証モジュールがあるそうです
詳細不明ですが、おそらくTwitter認証もあるんじゃないでしょうか?
実装しちまった後にDjango勉強会で知りました。くそがぁ
そっちから調べた方が、あなたのキャリアに将来的に貢献することは間違いありません

TwitterのDevelopersサイトでアプリ登録

  • https://dev.twitter.com/を開いてログイン
  • 右上のアイコンから「My applications」をクリック
  • 「Create a new application」をクリック
  • ローカル開発用に使いたいなら、事前に 127.0.0.1 に適当なドメインを hosts で割り振る。
    URLを入れる各所で、http://localhost/ は許容されていないため
  • Name, Description, Website, Callback 全部を入れる。後で書く自分の例で言うと Name=[てきとう], Description=[てきとう], Website=[http://localhost.kjirou.net/], Callback=[http://localhost.kjirou.net/auth_callback/]
  • 後で編集したり入力エラーで値を変えた場合に、更新成功したはずなのに値が変わってない様に見えることがある、単にサイトのバグだと思う、その場合はページ再表示
  • 作成し終わったら「OAuth tools」タブを開いておく、今回使うのはここの「Consumer key」と「Consumer secret」だけ

tweepyのインストール

pip install tweepy

実装例

とりあえずは、サンプルコードとしてここを開いて下さい

以下、補足:

  • 先の Consumer key と Consumer secret が、TWAUTHORIZER_CONSUMER_KEY と SECRET に入っているとする
  • 認証は auth ビューを叩かせると自動でTwitter側へリダイレクトして開始
  • 先の http://localhost.kjirou.net/auth_callback/ に auth_callback ビューがマッピングされているものとする、
    Twitter側で認証が完了するとここにリダイレクトする
  • api.me() の辺りまでが OAuth としての処理サンプル、後はこのアプリ独自の処理