Magicode logo
Magicode
0

DjangoでTwitterなどのOAuth 1.0認証を行う方法

自分自身記憶が薄れつつあり間違いが含まれてる可能性があります。ご了承ください。

(Twitterの場合は)まず以下のページを参考にCONSUMER_KEYとCONSUMER_SECRETを取得してください。 2021年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説 | 新宿のホームページ制作会社 ITTI(イッティ) この時コールバックURLにhttp://localhost:8000/<app_name>/twitter_callbackと入力してください(ローカルでテストする時)。<app_name>は自分のものに変更してください。

Django自体の解説はこちらを御覧ください。

実装

OAuthライブラリをコマンドラインからインストールします。

pip install oauthlib

OAuth認証情報を保存するためのモデルを作成します。

以下のようにインポートと定数を設定します。

urls.pyでTwitter認証を行うURLを指定します。この時twitter_callbackで登録したアプリのコールバックの設定通りになってるか確認してください。

以上でユーザーのOAuth情報を取得・保存できます。 また、以上の流れはOAuth1.0で共通なので例えばTumblrならばREQUEST_TOKEN_URLなどのURLを以下のように変更しコンシューマーキーなどを自分のアプリのものに切り替えればそれだけで動くコードになります。

OAuth情報を取得した後具体的にどう使うのかは以下の記事をご覧ください。 Tweepyでツイートやいいねを一括取得する方法 PyTumblrでリブログやスキを一括取得する方法

Gitを利用した開発環境と本番環境の両立

ローカルの開発環境と本番環境でコールバックして欲しいURLは当然異なってくるので、以下のようにして開発環境と本番環境の定数の値を変えることができます。 まず、local_env.pyというファイルを作り、開発環境用の定数を定義します。そしてファイル名を.gitignoreに追加します。

そしてviews.pyの定数宣言部分を以下のようにします。

こうすると、開発環境ではlocal_env.pyが存在するのでローカル環境用のコンシューマーキーが代入され、本番環境では(Gitでデプロイしてる場合)local_envが存在せず、ImportErrorになるので本番環境用のコンシューマーキーが代入されます。

Discussion

コメントにはログインが必要です。