PythonでTwitter OAuth認証をする方法を紹介

blog-icatch-343

WEBサービスを利用するためには、ユーザ&パスワードを入力してログイン認証をする必要がありますが、他のWEBサービスと連携して認証をすることによりユーザ&パスワードを入力することなくサービスにログインするOAuth認証を実現する方法を紹介します。

OAuth認証に対応しているWEBサービスは、google、office365、twitter、Facebookなどがあります。今回は、TWitterのOAuth認証について、紹介していくこととします。

準備

まず、最初にTWitterでOAuth認証させるためのアカウントが必要となります。
以前、紹介した記事にTWitterAPI利用申請を参考にして、TWitterアプリを作成しAPI KeyとAPI Key Secretを取得してください

https://touch-kun.net/2020/11/03/post-170/

アプリ作成後、OAuth認証のため以下の3点を編集して保存する。

  1. User authentication settingsの編集から「OAuth 1.0a」を有効にする
  2. 認証が確認できたのちに進むURLを「Callback URI / Redirect URL」に記載する
  3. OAuth認証を利用するドメインを「Website URL」に記載する

以上でOAuth認証するための、TWitterアプリの設定は完了

OAuth認証の流れ

TWitterアプリを作成したAPI KeyとAPI Key Secretを利用して、ログインしようとしているユーザに対して、OAuth TokenとOAuth Token Secretを発行し、認証用のURLを作成してユーザ側に以下のようなアクセス確認を表示させ、Twitterの連携ログインを促します。

twitter認証画面TWiterでのログイン認証(アプリ連携)が終わるとサービスにログインしたことになります。

Pythonライブラリのインストール

TWiterでのログイン認証(アプリ連携)をPythonで実現するライブラリを利用します。今回は requests-oauthlibという Python 用の OAuth 認証ライブラリをインストールします。

pip install requests requests_oauthlib

TWitter OAuth認証

ライブラリを利用して、TWitter OAuth認証を紹介します。

from requests_oauthlib import OAuth1Session

API_KEY = "TWitterアプリで取得したKEY"
API_KEY_SECRET = "TWitterアプリで取得したSECRET_KEY"

callback_url = "認証確認が取れた後に返す画面"
request_endpoint_url = "https://api.twitter.com/oauth/request_token"

twitter = OAuth1Session(API_KEY, API_KEY_SECRET)
response = twitter.post(request_endpoint_url, params={"oauth_callback": callback_url})
request_token = dict(parse_qsl(response.content.decode("utf-8")))

# リクエストトークンから認証画面のURLを生成
authenticate_url = "https://api.twitter.com/oauth/authenticate"
authenticate_endpoint = '%s?oauth_token=%s' % (authenticate_url, request_token['oauth_token'])
# 認証画面を表示
redirect(authenticate_endpoint )

1行目はOAuth認証のライブラリ
2,3行目はTWitterアプリで取得したKEY
4行目は認証後に返すURLを記載(TWitterOAuth認証で設定したURL)
5行目はTWitterOAuth認証のBASEとなるURL
6行目はOAuth認証のSessionを作成
7,8行目は認証した後callbackに指定したURLを設定して、OAuth認証のリクエストトークンを生成
9,10行目は
TWitterOAuth認証のURLを生成(1度しか認証できないURL)このURLが先ほど説明した認証許可画面が表示され、OAuth認証するとcallbackに指定したURLに移動します。
11行目は生成したOAuth認証のURLに移動

 

https://touch-kun.net/2022/07/12/post-390/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


上の計算式の答えを入力してください

CAPTCHA