Skip to content

「info.json」ファイルの仕様2ー1 「アクセス・トークンのリクエスト」

KEINOS edited this page Jul 8, 2018 · 2 revisions

Qithub コマンドでは、コマンドのプログラム内でアクセス・トークンをハードコーディングする(ソース内に含める)ことを禁止しています。

そのため、コマンドが特定 Web API のサービスを利用したい場合は、"require" の "access_token" 要素内に配列で指定します。

"access_token"の各要素(各リクエスト要素)に含める項目は以下の通りです。

Key名 概要 備考
service String サービス名 必須。
ユーザにわかりやすい記載にしてください。
scheme String URL スキーム 必須ではありませんが、サービスによって知る必要がある場合には記載してください。
http https ftp など。
host String 利用するサービスのホスト名 必須。
サービスによって複数ホストがあるため。
scopes String 利用するサービスの最低限のスコープ 必須。
read write follow repo など、スペース区切りでコマンドが利用したい範囲を明記してください。スコープの値はサービスに合わせてください。
大は小を兼ねさせず、コマンドの利用者のためにも必要以上のスコープは指定しないようにしてください。
callback String 引数に含める際のキー名 必須。
この値をキー名にしてコマンドの引数にアクセストークンが含まれて渡されます。

具体例

例えば、Mastodon と GitHub の API を利用するためにアクセス・トークンをリクエストしたい場合は、以下のような info.json の内容になります。

{
    "require": {
        "access_token": [
            {
                "service": "mastodon",
                "scheme": "https",
                "host": "qiitadon.com",
                "scopes": "read follow",
                "callback": "access_token_mastodon"
            },
            {
                "service": "github",
                "scheme": "https",
                "host": "github.com",
                "scopes": "read",
                "callback": "access_token_github"
            }
        ]
    }
}

上記リクエストをinfo.jsonで指定した場合、実行時にコマンドが受け取る引数(Qithub エンコード・データ)は以下のようになります。

%7B%22name_script%22%3A%22YourScript%22%2C%22args%22%3A%22xxxxxx%22%2C%22access_token_mastodon%22%3A%22yyyyyyyyyyy...%22%2C%22access_token_github%22%3A%22zzzzzzzzzzz...%22%7D

受け取ったデータをデコード(URLデコード)した JSON データは以下のようになります。あとは、これらの値を使って各自の処理を行い、結果を出力します。

{
    "name_script": "YourScript",
    "args": "xxxxxx",
    "access_token_mastodon": "yyyyyyyyyyy...",
    "access_token_github": "zzzzzzzzzzz..."
}

取得したアクセス・トークンの取り扱いについて

リクエストによって得たアクセス・トークンの取り扱いに関しては1点の禁止次項を除き、特に定められていませんが、推奨している事項はあります。

禁止事項

  • 取得したアクセス・トークンをコマンドのディレクトリ以外に保存することを禁止します。(外部のサイト、サービス、クラウドなどへの保存もNGです)

推奨次項

  • 都度、リクエストするものとし、コマンド内部で保存しない
  • コマンドの性質上、アクセス・トークンの保存が必要な場合はプレーンな状態で保存しない
  • アクセス・トークンが保存される場合は、ユーザーにその旨を明示する。README ファイルやヘルプに記載するなど。

▶︎ 『他コマンドの実行リクエスト

Clone this wiki locally