LINE WORKS の Service API を postman で試す方法

既にご存じの方もござりましょうが。

LINE WORKS の API には `Service API` と `Server API` の２種類があります。
トークとかドライブとか、ログインしたユーザのデータにアクセスする API が `Service API` 
組織連携とかトーク Bot とか、すべてのユーザのデータにアクセスする API が `Server API` 

今回は、`Service API` を Postman で検証する方法を紹介したいと思います。

# Service API の使い方

Service API を使うには、次の 3 STEP が必要です。

1. Service API Authorization Code の発行
2. Service API Access Token の発行
3. 利用したい Service API を Request

詳細は[公式ドキュメント](https://developers.worksmobile.com/jp/document/1002002?lang=ja)にて。

## Service API Authorization Code の発行

まずは Postman の画面を見てくださいな。

![1572329360.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/2ab2214c-33e9-08e0-49cf-88c5809e6347.png)

では、補足をば。

- method は `GET` を指定
- URL は、最初は `https://auth.worksmobile.com/ba/{API ID}/service/authorize` と入力。
- 入力するところは `Params` タブだけです。`Header` `Body` の記入は不要です。
- `{API ID}` には DeveloperConsole で確認した `API ID` を入力。{} は不要です。
- `client_id` には DeveloperConsole で確認した `Service API Consumer Key` を入力。
- `redirect_uri` には `https://contact.worksmobile.com/v2/admin/member/management` と入力。（管理画面に redirect されるように設定しています）
- `domain` には自分のドメイン名を。アカウント ID の @ マーク以降です。
- `state` は正直何を入れてもいいですが、CSRF 対策なので `neverdocsrf` と入力しています。

ここまで入力すると、URL が自動生成されます。
こんな感じの URL です。
`https://auth.worksmobile.com/ba/apiid/service/authorize?client_id=Service API Consumer Key&redirect_uri=https://contact.worksmobile.com/v2/admin/member/management&domain=domainName&state=neverdocsrf`

この URL をブラウザに入力します。
すると、ログイン画面が表示されるので、自分のアカウントでログインします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/2344edbe-7559-e2b5-07db-785c1e317fe9.png)

ログインすると管理者画面に遷移します。
ここで、URL に注目してください。
![1572330952.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/784ca6e7-244c-e40a-e4b6-cd304c555512.png)

`https://contact.worksmobile.com/v2/admin/member/management?code=U0lrNTV1NEtNeW9pUkl0Rg==&errorCode=00&state=neverdocsrf`
となっています。
この `code=U0lrNTV1NEtNeW9pUkl0Rg==` が `Service API Authorization Code` になります。
もちろん、毎回違うコードが発行されますから、このコードは使えませんよ！(^×^)

これが GET できたら次の STEP に進みます。

## Service API Access Token の発行

次の Postman の画面を貼りますよっと (ﾉ∀｀*)ﾍﾟﾁ

![1572331482.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/bbb92c79-169b-9ecd-6ae3-520e053fcc7d.png)

では、補足していきますよー。

- method は `GET` を指定
- URL は、最初は `https://auth.worksmobile.com/ba/{API ID}/service/token` と入力。
- 入力するところは `Params` タブだけです。`Header` `Body` の記入は不要です。
- `{API ID}` には DeveloperConsole で確認した `API ID` を入力。{} は不要です。
- `client_id` には DeveloperConsole で確認した `Service API Consumer Key` を入力。
- `code` には先ほど GET した `Service API Authorization Code` を入力。
- `domain` には自分のドメイン名を。アカウント ID の @ マーク以降です。

内容はさっきとほぼ同じですね。
しかし、今度は Postman の `Send` ボタンを押して Request します。

成功すると以下のような内容が返ってきます。

```
{
    "errorCode": "00",
    "expire_in": "31536000",
    "refresh_token": "AAAAWJ3cyj8Weg.......==",
    "access_token": "AAAAv1VwqZqlt.......=="
}
```

この `access_token` が `Service API Access Token` になります。

余談ですが、私は最初 `errorCode` が返ってきてるのでエラーになったのかと思いました。
いや、成功してるんですけどね。`error` って文字は見えるとつい・・・早とちりしてました(*´Д｀)

では、`Service API Access Token` も手に入ったので、何か `Service API` を Request してみましょうか！(=ﾟωﾟ)ﾉ

## 利用したい Service API を Request

何がいいですかねー？('ω')
んー・・・

では、地味に叩く機会のある Drive API のユーザー情報閲覧 API を使ってみましょうか！( ﾟДﾟ)
https://developers.worksmobile.com/jp/document/1008002?lang=ja

![1572332862.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/a46ad065-e4ad-44d5-9c66-691c7b1c9fa4.png)

- method は `POST` を指定
- URL は、`https://apis.worksmobile.com/{API ID}/drive/getUserInfo/v1` と入力。
- `{API ID}` には DeveloperConsole で確認した `API ID` を入力。{} は不要です。
- `Authorization` タブを選んで `TYPE` を `Bearer Token` にします～。
- `Token` に先ほどの `Service API Access Token` を入力！

そしたら次は `Headers` の設定ですね～。

![1572333091.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363367/9a0e357c-152a-dd39-41c9-d85882627efa.png)

- なんと `consumerKey` だけです。( ﾟДﾟ)
- `consumerKey` には DeveloperConsole で確認した `Service API Consumer Key` を入力。

Drive API のユーザー情報閲覧 API は `Body`が不要なので、これでおしまいです。

`Send` ボタンを押して Request します。

成功すると以下のような内容が返ってきます。

```
{
    "message": "success",
    "result": {
        "userId": "xxxxxxxxxxxxxx",
        "userIdx": xxxxxxxx,
        "cmsDomain": "xxx-xxxx.xxxxx.xxxxxxxxxx.com",
        "usePrivateFolder": true,
        "isReadOnly": false,
        "useDocIndex": true,
        "useDocViewer": true,
        "useMobileDownload": true
    },
    "code": "0"
}
```

一応、伏字にさせていただきました！(*‘∀‘)ドヤァ

こんな感じで `Service API Consumer Key` さえ GET できてしまえば、`Service API` も `Server API` と同じように Postman で利用することができます。
ちょっとめんどい印象ですが、一回やってしまえばそんなに難しくないですよ～。

#おわりに
ここまでお付き合いいただきありがとうございました。

今回はスクショをいっぱい入れてみましたよ！
少しは丁寧な記事になったでしょうか？

実際に `Service API` を使うときは SSO してからになると思うのですが、その前にちょっといじってみたいんだよねー。的なときには Postman が本当に便利です。
Please Mr.Postman ～♪

次は何を書こうかな～。
ではまた！(^^)/

#参考にさせていただきましたm(_ _)m
[Postman 公式](https://www.getpostman.com/)
[LINE WORKS Developers](https://developers.worksmobile.com/jp/document?lang=ja)