LINE WORKS API 認証フローの実装 (OAuth 2.0)
はじめに
この記事では、LINE WORKS の API を使用するための認証フローを実装する方法を解説します。OAuth 2.0 の Authorization Code Flow を利用して、Access Token を取得します。
Google Colab でスクリプトを共有しているので、以下の URL から簡単に試すことができます!
https://colab.research.google.com/drive/1nLHnrwMJ2eXuNcQRPxvfAdOKyDLTKHMB?usp=sharing
前提条件
- LINE WORKS Developer Console でアプリを作成済み
- Client ID と Client Secret を取得済み
- アプリにリダイレクト URL と必要な Scope を設定済み
必要なライブラリ
- Python の
requests
ライブラリを使用します。最初にインストールしておきましょう。
手順
以下の手順に沿って進めます。
- Google Colab の準備とライブラリのインストール
- 認可リクエスト URL の作成
- 認証後に取得するリダイレクト URL の入力
- Access Token の取得
1. Google Colab の準備とライブラリのインストール
まずは、requests
ライブラリをインストールします。Google Colab のセルで以下のコマンドを実行してください。
!pip install requests
2. 認可リクエスト URL の作成
次に、認証リクエスト URL を生成します。この URL をブラウザで開くと、LINE WORKS の認証画面が表示されます。
# 必要な変数を Google Colab のパラメータ形式で入力
CLIENT_ID = "YOUR_CLIENT_ID" # @param {type:"string"}
CLIENT_SECRET = "YOUR_CLIENT_SECRET" # @param {type:"string"}
REDIRECT_URI = "https://example.com" # @param {type:"string"}
SCOPE = "bot" # @param {type:"string"}
STATE = "random_state_string" # @param {type:"string"}
NONCE = "random_nonce_string" # @param {type:"string"}
import urllib.parse
# 認可リクエスト URL を作成
auth_url = "https://auth.worksmobile.com/oauth2/v2.0/authorize"
params = {
"client_id": CLIENT_ID,
"redirect_uri": REDIRECT_URI,
"scope": SCOPE,
"response_type": "code",
"state": STATE,
"nonce": NONCE,
}
auth_request_url = f"{auth_url}?{urllib.parse.urlencode(params)}"
# 認可リクエスト URL を表示
print("以下の URL にアクセスして認証を進めてください:")
print(auth_request_url)
上記コードを実行すると、認証リクエスト URL が表示されます。この URL をブラウザで開き、LINE WORKS のアカウントでログインを行います。
3. 認証後に取得するリダイレクト URL の入力
認証が成功すると、ブラウザは事前に設定したリダイレクト URL に移動し、以下のような形式の URL が表示されます。
https://example.com/?code=AUTHORIZATION_CODE&state=random_state_string
このリダイレクト URL をコピーして、次のセルに入力します。
REDIRECT_URL = "https://example.com/?code=AUTHORIZATION_CODE&state=random_state_string" # @param {type:"string"}
4. Access Token の取得
リダイレクト URL から認証コード (code
) を抽出し、それを使用して Access Token を取得します。
import requests
import urllib.parse
# リダイレクト URL からクエリパラメータを解析
parsed_url = urllib.parse.urlparse(REDIRECT_URL)
query_params = urllib.parse.parse_qs(parsed_url.query)
# Authorization Code を取得
AUTHORIZATION_CODE = query_params.get("code", [None])[0]
if AUTHORIZATION_CODE is None:
raise ValueError("リダイレクト URL に 'code' パラメータが含まれていません。")
print(f"抽出された認証コード: {AUTHORIZATION_CODE}")
# トークンリクエスト用のエンドポイント
TOKEN_URL = "https://auth.worksmobile.com/oauth2/v2.0/token"
# リクエストパラメータ
data = {
"code": AUTHORIZATION_CODE,
"grant_type": "authorization_code",
"client_id": CLIENT_ID,
"client_secret": CLIENT_SECRET,
"redirect_uri": REDIRECT_URI,
}
# POST リクエストを送信して Access Token を取得
response = requests.post(TOKEN_URL, data=data)
# レスポンスを確認
if response.status_code == 200:
tokens = response.json()
print("Access Token:", tokens["access_token"])
print("Refresh Token:", tokens["refresh_token"])
print("ID Token:", tokens.get("id_token"))
else:
print(f"エラー: {response.status_code}, {response.text}")
レスポンス例
成功時:
抽出された認証コード: jp1T2FBaVUyd1Z0UFlKNjZvNA==
Access Token: jp1AAAA...
Refresh Token: AAAAUrG...
失敗時:
エラー: 400, {"error":"invalid_request","error_description":"Invalid client_id"}
まとめ
これで、Google Colab を使用して LINE WORKS API の認証フローを実装することができました。この手順により、Access Token を取得して LINE WORKS のさまざまな API を利用できます。
LINE WORKS アカウントによるログインを Selenium で自動化する手法の記事も書きました。こちらも参照してみてください。