【PHP】LINE WORKS API 2.0のJWT認証を使用したAccess Tokenの発行方法
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、PHPでLINE WORKS API 2.0のJWT認証を使用したAccess Tokenの発行方法をご紹介しています。
PHPでLINE WORKS API 2.0でAccess Tokenを発行するにはどうすればいいんだろう?
上記の疑問にお答えします。
では、解説していきます。筆者検証環境とバージョン情報
本記事では、PHPでLINE WORKS API 2.0のJWT認証を行いAccess Tokenを発行します。JWT認証とHTTPリクエストを行うために2つのパッケージをインストールします。それぞれのバージョン情報は下記の通りです。
PHP | 8.2.4 |
PHP-JWT | 6.8.1 |
Guzzle | 7.8 |
各パッケージは対象プロジェクトにてcomposerでインストールしておきます。
PHP-JWT
$ composer require firebase/php-jwt
Guzzle
$ composer require guzzlehttp/guzzle
JWT認証を行いアクセストークンを発行する
LINE WORKS API 2.0でJWT認証を行いAccess tokenを発行します。Access Tokenを発行するには、下記リクエストURLに指定された値をPOST送信します。
Request URL
https://auth.worksmobile.com/oauth2/v2.0/token
Request Body
パラメータ | タイプ | 説明 |
---|---|---|
assertion | String | JWT値 |
grant_type | String | urn:ietf:params:oauth:grant-type:jwt-bearer |
client_id | String | Client ID |
client_secret | String | Client Secret |
scope | String | Scope(権限範囲) 参考:Scopeリスト |
下記はPHPでAccess Tokenを取得するサンプルです。必要なパラメータについてはLINE WORKSの管理者画面(Admin)とDeveloper Consoleから取得してください。
(取得方法については後日投稿にまとめる予定です。)
PHP
<?php require_once "vendor/autoload.php"; use Firebase\JWT\JWT; use GuzzleHttp\Client; $result = ""; $auth_url = "https://auth.worksmobile.com/oauth2/v2.0/token"; $client_id = "CLIENT_ID"; $client_secret = "CLIENT_SECRET"; $service_account_id = "example@example"; $private_key = file_get_contents("private_2023xxxxxxxxxx.key"); $jwt_params = [ "iss" => $client_id, "sub" => $service_account_id, "iat" => time(), "exp" => time() + 3600 ]; $token = JWT::encode($jwt_params , $private_key, "RS256"); $headers = [ "Content-Type" => "application/x-www-form-urlencoded" ]; $params = [ "assertion" => $token, "grant_type" => "urn:ietf:params:oauth:grant-type:jwt-bearer", "client_id" => $client_id, "client_secret" => $client_secret, "scope" => "bot", ]; try { $client = new \GuzzleHttp\Client; $response = $client->post($auth_url, [$headers, "form_params" => $params]); $status_code = $response->getStatusCode(); if($status_code == 200) { $result = json_decode($response->getBody()); } } catch (Exception $e) { $result = $e; }
リクエストが成功すると下記のような値が取得できます。
object(stdClass)#33 (5) { ["access_token"]=> string(418) "jp1AAABEqfga5faFusPJZpw5CEz8EY......" ["refresh_token"]=> string(226) "jp1AAAAg79O5ya1W+1dZD/dxoYX8hk......" ["scope"]=> string(3) "bot" ["token_type"]=> string(6) "Bearer" ["expires_in"]=> string(5) "86400" }
内容は下記の通りです。
Response Body
パラメータ | タイプ | 説明 |
---|---|---|
access_token | String | Access Token |
refresh_token | String | Refresh Token |
token_type | String | "Bearer" |
expires_in | String | Tokenの有効期限(24時間) |
scope | String | Scope(権限範囲) 参考:Scopeリスト |
上記で取得したAccess TokenをLINE WORKSのAPIで使用します。
$result->access_token;
最後に
本記事では、PHPにてLINE WORKS API 2.0のJWT認証からAccess Tokenを発行するまでの流れを解説しました。Access Tokenが発行し、Scope(権限範囲)を設定することで、適切にLINE WORKSのAPIを使用することができます。LINE WORKSは魅力的なAPIを数多く公開していますので、LINE WORKSと外部サイト等を連携して使用したい場合は、ぜひ試してみてくださいね。
以上、PHPでLINE WORKS API 2.0のJWT認証を使用したAccess Tokenの発行方法のご紹介でした!