0. はじめに
本記事は下記の3回に分けて Postman を使用した LINE WORKS API のコール方法を書いてま〜す。
- 第1回 準備編
- 第2回 Server API 編
- 第3回 Service API 編
本記事は、第2回 の Server API 編です。
Server API 編を行う前に必ず「準備編」の作業を終わらせておいてください。
流れは下記の通りです。
- Server API 用の Access Token 取得
- 取得した Access Token で各 Server API をコール
- まとめ
1. Server API 用の Access Token 取得
まずは Access Token を取得してみる
Server APIs Collection の 0_GetToken フォルダで「Server Token 取得」を選択し、「Send」をクリック。
結果として、Response の Body の JSON に access_token が返ってきます。はい、簡単!1クリック!
どうやって取得しているの?
Postman の Reqest Send をクリックすると下記のフローで処理が行われます。
① Pre-request Script → ② Request - Response → ③ Tests
それを利用して、
① Pre-request Script
JWTライブラリをHTTP経由で取得し、Server Token 用の JWT を生成して Server APIs Collection の Variable 「jwt」にセット!
Pre-request Script の JavaScript はこんな感じ。
var navigator = {};
var window = {};
// JWT ライブラリを HTTP 経由で取得
pm.sendRequest('http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js', function (err, res) {
if (err) {
console.log(err);
} else {
// JWT ライブラリ読み込み
eval(res.text());
// Environment の PRIVATE_KEY を変数に代入
const privateKey = pm.environment.get('PRIVATE_KEY');
const header = {"alg" : "RS256", "typ" : "JWT"};
const claimSet =
{
"iss": pm.environment.get('SERVER_ID'), // Environment の SERVER_ID を iss に代入
"exp": KJUR.jws.IntDate.get("now + 1hour").toString(),
"iat": KJUR.jws.IntDate.get("now").toString()
}
// JWT 生成
const jwt = KJUR.jws.JWS.sign(null, header, claimSet, privateKey);
// Server APIs Collection の Variable にセット!!!
pm.collectionVariables.set("jwt", jwt);
console.log(jwt);
}
});
② Request - Response
①で生成した Server APIs Collection の Variable「jwt」を Body の「assertion」にセットし、Server Token 取得 API をコールすると、Response に「access_token」を返してくれる。
③ Tests
②の Response Body の「access_token」を Server APIs Collection の Variable「access_token」にセット!
結果、Server APIs Collection の Variables は、下記の状態になるはず。
「jwt」(Token 取得したら用無し)と「access_token」がセットされてる!
Server APIs Collection の Authorization を確認すると、
- TYPE:Bearer Token
- Token:{{access_token}} ← Server APIs Collection の Variable「access_token」を使用する
これを使って、Server APIs Collection 配下の各 Request は、この Access Token を使用するように設定してます。
Bot登録(1on1)の Request を例に Authorization を確認すると
のようになってるんだよ。
2. 取得した Access Token で各 Server API をコール
1.で取得した Access Token を使って、各 Server API をコールします。
現状は、Bot API だけしかサンプルがありません。。。どんどん追加していきます。少々お待ちを!
とりあえず、Bot登録(1on1)の Request を実行してみるとこんな感じになります。
botNo が返ってきたー!!!
Developer Console の Bot にちゃんと登録されてるー。
3. まとめ
以上で、Server API 編 終了で〜す。
1番めんどうだった Access Token の取得が1クリックで完了!
ぜひ、活用してみてください。
注意:Server API の Access Token の有効期限は、24時間です。
なので有効期限が切れたら、再度「Server Token 取得」の「Send」クリック!
現状は、Bot API だけしかサンプルがありません。。。がんばって 全 API をコールしようと思います。
Postman の設定情報を更新した際は Export して GitHub の line-works-postman の push して行こうと思っていますので watch していただければ幸いです。(twitterでもつぶやきますので@shotamaco1のフォロー願います)
次回「LINE WORKS API を Postman でコールしてみる(Service API編)」です。
Postman での Service API 用 Access Token の取得設定をメインに書こうと思います。