Site24x7 の API 認証が OAuth 2.0 に変更されたので、アクセストークンを取得してみる。

# ０．はじめに

以下の記事にある様に、サイト監視に [Site24x7](https://www.site24x7.com/) を利用しているんですが…、

* [StatusCake や Site24x7 と同じ様な海外のサイト監視サービスを色々と調べてみた \- Qiita](https://qiita.com/kusokamayarou/items/77e0cba7857a90143694)
* [Site24x7 での API キーの取得のやり方 \- Qiita](https://qiita.com/kusokamayarou/items/e2eec05d8ea2acf43594)
* [kintone アプリで管理しているサイト情報を、Site24x7 と StatusCake に連携させてみる \- Qiita](https://qiita.com/kusokamayarou/items/553f07ed0c904d02d6f1)

<br>

先日、以下の様なメールが届きまして…、

* ![FireShot Capture 234 - Site24x7_ Migrate to OAuth 2.0 - y.uekama.gs@gmail.com - Gmail_ - mail.google.com.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/1583a351-63d4-10f2-dbaa-f3f437a85fb4.jpeg)

どうやら、

「API の認証が OAuth 2.0 に変更になるから、対応ヨロシク〜♪」

ということみたいで…、

とりあえず、今回は API の OAuth 2.0 認証のアクセストークンを取得してみます。

<br>

基本的に、以下のドキュメントの手順通りに進めます。

* [Site24x7 \| API Reference](https://www.site24x7.com/help/api/#authentication)

# １．ZOHO Developer Console で セルフクライアント を作成する

1. 以下のリンクの「United States」リンクをクリックし、[ZOHO Developer Console](https://api-console.zoho.com/) を表示します。
    * [Site24x7 \| API Reference](https://www.site24x7.com/help/api/#authentication)
    * ![FireShot Capture 224 - Site24x7 - API Reference - www.site24x7.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/73d1d3bd-57e6-8d11-98f1-b367648bd9cc.jpeg)
1. 表示されたページの「GET STARTED NOW」ボタンをクリックします。
    * ![FireShot Capture 226 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/2bc57aa9-12a1-b9a6-4eda-03d0094db0d2.jpeg)
1. 表示されたページの「Self Client」ボタンをクリックします。
    * ![FireShot Capture 227 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/250feb41-6d80-40df-cbcd-fc81e0c65aee.jpeg)
1. 表示されたページの「CREATE」ボタンをクリックします。
    * ![FireShot Capture 229 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/e1d801a6-2844-9429-b317-14e643733083.jpeg)
1. 表示されたダイアログの「OK」ボタンをクリックします。
    * ![FireShot Capture 230 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/424ea3cf-aa7e-ad32-e69e-7c83737a861a.jpeg)
1. 表示されたページに、以下の項目が表示されますので、メモしておきます。
    * Client ID
    * Client Secret
    * ![FireShot Capture 231 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/d721bc7b-23c6-8726-02e3-7d7bc94d509d.jpeg)

# ２．作成した セルフクライアント の コード を生成し、合わせて各種トークンを取得する

1. 作成したセルフクライアントの詳細ページを表示、「Generate Code」タブを選択後、以下の項目を入力し、「GENERATE」ボタンをクリックします。
    * Scope :
        * Site24x7.Account.All,Site24x7.Admin.All,Site24x7.Reports.Read,Site24x7.Operations.All
        * ※ 詳細は、[Site24x7 \| API Reference](https://www.site24x7.com/help/api/#authentication) の「List of scopes available in Site24x7」を参照。
    * Time Duration :
        * 10 minutes
        * ※ 念の為、長めに。
    * Scope Description :
        * ※ 任意
    * ![FireShot Capture 232 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/f4e279df-8ede-d4ec-2522-7fc522524665.jpeg)
1. 表示されたダイアログの「COPY」ボタンをクリック、生成されたコードをコピーします。その後、ダイアログを閉じます。
    * <b><font color="red">※ 生成されたコードは次の手順に絶対に必要なので、忘れない様にすること !!</font></b>
    * <b><font color="red">※ あと、生成されたコードは、有効期限が非常に短いので、とっとと次の手順を行うこと !!</font></b>
    * ![FireShot Capture 233 -  - api-console.zoho.com.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/161939/f7761220-1a6b-91f2-b142-02790a859e09.jpeg)
1. 以下のコマンドを実行し、各種トークン (アクセストークンとリフレッシュトークン) を取得します。

```bash
curl  https://accounts.zoho.com/oauth/v2/token -X POST \
-d "client_id=[Client ID]" \
-d "client_secret=[Client Secret]" \
-d "code=[生成されたコード]" \
-d "grant_type=authorization_code"
```

```json
{
"access_token":"****",
"refresh_token":"****",
"expires_in_sec":3600,
"api_domain":"https://www.zohoapis.com",
"token_type":"Bearer",
"expires_in":3600000
}
```

* ※ 念の為、以下のコマンドを実行し、取得したアクセストークンが正常に利用出来るか確認します。

```bash
curl https://www.site24x7.com/api/monitors \
-H 'Authorization: Zoho-oauthtoken [アクセストークン]'
```

# ３．アクセストークンを更新する

1. 以下のコマンドを実行し、アクセストークンを更新します。

```json
curl https://accounts.zoho.com/oauth/v2/token -X POST \
-d "client_id=[Client ID]" \
-d "client_secret=[Client Secret]" \
-d "refresh_token=[リフレッシュトークン]" \
-d "grant_type=refresh_token"
```

```json
{
"access_token":"****",
"expires_in_sec":3600,
"api_domain":"https://www.zohoapis.com",
"token_type":"Bearer",
"expires_in":3600000
}
```

# ９９．ハマりポイント

* そこまでハマった訳じゃ無いですが…、日本語の記事が全然無くて、ちょっと手間取りました…。
<br>
* やっぱり日本語の記事ってありがたいですよね♪

# ＸＸ．まとめ

今回、OAuth 2.0 のアクセストークンを取得してみましたが…、

これまでのアクセストークンと異なり、(実行頻度にもよりますが…、)これからは毎回アクセストークンを取得する必要が出てきました。

以下の記事の様に、[AWS Lambda](https://aws.amazon.com/jp/lambda/) で Python スクリプトを実行しているので、Python スクリプトの修正も必要となります。

* [kintone アプリで管理しているサイト情報を、Site24x7 と StatusCake に連携させてみる \- Qiita](https://qiita.com/kusokamayarou/items/553f07ed0c904d02d6f1)

今のスクリプトには、各種シークレットコードをソースにベタ書きしており、そのままアクセストークンを取得する処理を追加しても良いんですが、出来れば AWS SSM Parameter Store を使って、よりセキュアに出来ればとも思います。

* [AWSのParameter StoreとSecrets Manager、結局どちらを使えばいいのか？比較 \- Qiita](https://qiita.com/tomoya_oka/items/a3dd44879eea0d1e3ef5)
* [AWS Lambda \+ SSM Parameter Store でカウンターを作る \- Qiita](https://qiita.com/hoto17296/items/5f17af9b5261b9f219ee)
* [パラメータストアを使って安全なLambda関数を作成する ｜ Developers\.IO](https://dev.classmethod.jp/cloud/aws/sugano-039-ssm-paramstore-lambda/)

時間作って、対応できればと！

<br>

以上、ご参考になれば♪

👋👋👋