2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE WORKSAdvent Calendar 2024

Day 12

LINE WORKS API のトークン管理がアップデートで柔軟になりました

Last updated at Posted at 2024-12-12

LINE WORKS API のトークン管理が柔軟になった

トークンの再発行

LINE WORKS API のアクセストークンに関するアップデートがありました。
[リリース]アップデートおよび動作変更・提供終了予定のお知らせ(12月6日)

LINE WORKS API を利用するには、アクセストークンが必要です。アクセストークンは有効期限が限られているため、定期的に再発行する必要があります。

リフレッシュトークン再発行による継続利用

従来、リフレッシュトークンを用いてアクセストークンを再発行しても、リフレッシュトークン自体は更新されませんでした。これまでは、リフレッシュトークンの有効期限は 90 日で、期限が切れると、再度認証を行う必要がありました。

今回のアップデートにより、リフレッシュトークンを用いたトークン再発行時に、リフレッシュトークンも同時に再発行されるようになりました。これにより、再認証の手間なく、API を継続して利用することが可能になります。

アクセストークンの有効期限を選択可能に

また、アクセストークンの有効期限も、1 時間と 24 時間のいずれかを選択可能になりました。

image.png

今回は、LINE WORKS の API トークン再発行を Google Colab で試して、追加された設定によるレスポンスの差異を確認してみました。

Google Colabでトークンを再発行する

Google Colab を使用すると、ブラウザ上で Python のコードを実行できます。今回は、Google Colab 上で LINE WORKS API のトークンを再発行するスクリプトを こちら で共有しています。

この Colab ノートブックを開いて、以下の手順でトークンを再発行できます。

  1. 必要な情報を入力します。
  2. スクリプトを実行します。

事前準備:

  • スクリプトを実行する前に、LINE WORKS Developer Console でアプリを作成し、client_idclient_secretrefresh_token を取得しておく必要があります。

スクリプト解説

共有した Colab ノートブックでは、以下のスクリプトを使用しています。

import json
import requests

# --- 必要な情報を入力 ---
client_id = "YOUR_CLIENT_ID"  # @param {type:"string"}
client_secret = "YOUR_CLIENT_SECRET"  # @param {type:"string"}
refresh_token = "YOUR_REFRESH_TOKEN"  # @param {type:"string"}

# --- Access Token 再発行のリクエスト ---
url = "[https://auth.worksmobile.com/oauth2/v2.0/token](https://auth.worksmobile.com/oauth2/v2.0/token)"
headers = {"Content-Type": "application/x-www-form-urlencoded"}
data = {
    "grant_type": "refresh_token",
    "client_id": client_id,
    "client_secret": client_secret,
    "refresh_token": refresh_token,
}

response = requests.post(url, headers=headers, data=data)

# --- レスポンスの処理 ---
if response.status_code == 200:
    response_json = response.json()
    access_token = response_json["access_token"]
    print(f"新しい Access Token: {access_token}")
    if "refresh_token" in response_json:
        new_refresh_token = response_json["refresh_token"]
        print(f"新しい Refresh Token: {new_refresh_token}")

    # response の body を整形して出力
    print("\nResponse Body:")
    print(json.dumps(response_json, indent=4))  # インデントをつけて見やすく表示

else:
    print(f"エラーが発生しました: {response.status_code} {response.text}")

トークン設定によるレスポンスの違い

LINE WORKS Developer Console のトークン設定は、アクセストークンの有効期限やリフレッシュトークンの動作に影響を与えます。以下は設定ごとのレスポンスの違いを説明します。

設定項目

  1. Access Token の有効期限

    • 1 hour: アクセストークンの有効期限が1時間。
    • 24 hours: アクセストークンの有効期限が24時間。
  2. Refresh Token Rotation

    • ON:
      • アクセストークン再発行時に、新しいアクセストークンとリフレッシュトークンが発行される。
      • 最大100個のトークンが有効。それを超えたものは無効化される。
    • OFF:
      • アクセストークン再発行時に、新しいアクセストークンのみが発行される。
      • 新しいアクセストークンが発行されると、以前のトークンは無効化される。

レスポンス例

ケース1: Access Token 有効期限が 1時間 (1 hour), Refresh Token Rotation が ON

{
    "access_token": "sample_access_token_1",
    "refresh_token": "sample_refresh_token_1",
    "scope": "bot",
    "token_type": "Bearer",
    "expires_in": "3600"
}

ケース2: Access Token 有効期限が 24時間 (24 hours), Refresh Token Rotation が ON

{
    "access_token": "sample_access_token_2",
    "refresh_token": "sample_refresh_token_2",
    "scope": "bot",
    "token_type": "Bearer",
    "expires_in": "86400"
}

ケース3: Access Token 有効期限が 24時間 (24 hours), Refresh Token Rotation が OFF

{
    "access_token": "sample_access_token_3",
    "scope": "bot",
    "token_type": "Bearer",
    "expires_in": "86400"
}

まとめ

LINE WORKS API のトークン再発行が柔軟になりました。用途や、運用方針に応じた設定でトークン管理を行う事が可能です。

Google Colab で設定によるレスポンスの差異についても、共有した Colab ノートブックを使って確認することができます。

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?