Skip to content

アクセストークンについて

KEINOS edited this page Oct 13, 2018 · 5 revisions

TL;DR

https://qithub.tk/ のサーバーには、Qiita や Qiitadon など、各種サービスのアクセス・トークンを取得するためのシェル・コマンドが用意されています。

このコマンドで取得できるアクセス・トークンは、Qithub サークル専用のアカウントで取得した共通のアクセス・トークンです。

事前に Issue を立てて申請すると、自作スクリプトの設置先から以下のコマンドをローカル・アクセスで外部コマンドとして実行すると、アクセス・トークンが取得できます。

アクセス・トークン取得コマンド

アクセス・トークン取得のシェル・コマンドは gettoken です。

gettoken <サービス名> <トークン名>

各プログラム言語からの実行例は TS;DR をご覧ください。

TS;DR

設置する、自作 BOT やスクリプト(以下アプリ)が Qiita/Qiitadon などの Web API 操作を必要とする場合、API のメソッドによってはアクセス・トークンが必要になります。

しかし、アクセス・トークンやパスワードをスクリプト内に記載、もしくはリポジトリ内に設置することはオープン・ソースであるため禁止しています。(センシティブ・データのハードコーディングの禁止)

そのため、アクセス・トークンの取得もしくは登録(保存する)機能はアプリ側で各々実装する必要があります。

この時、必要なアカウントが Qithub(bot) のアクセス・トークンであった場合、実装の手間を省くためサーバーのシェル・コマンドでアクセストークンを取得できるようにしました。各プログラム言語から外部コマンドとして gettoken コマンドを実行してください。

#f03c15 重要事項(必須)

アクセス・トークンを必要とする BOT やプログラムは事前に issue を立ててメンテナから同意を得てください

申請に必要な情報

  • 利用の目的
  • スクリプトの設置先ディレクトリ。(gettoken の呼び出し許可のホワイト・リストに追記する必要があります)

また、ソースコード内のアクセス・トークンのリクエスト箇所にはコメントで明記し、同意を得た issue 番号を必ず添えてください

コマンドの利用例

Qiitadon の Qithub アカウント(Qithub BOTの)アクセストークンを取得する例。

$ gettoken qiitadon qithub
9axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxf91

上記を参考に各プログラム言語から外部コマンドとして呼び出してください。なお Qithub-BOT のトゥート経由のコマンド実行機能である 「Qithub コマンド」は、このシェル・コマンドの利用を禁止とします。

PHP からの呼び出し例

<?php
$access_token = exec('gettoken qiitadon qithub');

Python からの呼び出し例

#!/usr/bin/env python

import commands

access_token = commands.getoutput('gettoken qiitadon qithub')

ヘルプの内容

$ gettoken -h
Usage: gettoken <service name> <token name>

Service names are:
  - qiitadon
  - qiita

Token names are:
  - qithub	Qithub(bot) 本番用アクセストークン。@[email protected]
  - qithub-dev	Qithub(bot) テスト用アクセストークン。@[email protected]
  - qiitime	Qiitime 用アクセストークン。@[email protected]
  - test	取得テストや表示確認のためのダミートークン。

事前テスト

当然サーバーにアップしないと動作テストできないため毎回 PR を出すのは現実的ではありません。

自分のリポジトリを https://dev.qithub.tk/ にマウントできる仕組みがあるので、そちらでテストください。(その際は、本番トークンを呼び出さないように注意してね)

もしくは各自のローカル環境で、パスが通っているディレクトリに自身のアクセストークンを返す同名のコマンドを設置しても良いと思います。

その他の技術情報

サーバーの環境変数を使わない理由

アクセストークンの利用状況によって制限をかけたりする場合にコントロールしやすいように。

シェルコマンドの設置先

gettoken コマンドは、お遊びサーバーの以下のパスに設置されています。絶対パスでアクセスする場合に参考にしてください。

/usr/local/bin/gettoken
Clone this wiki locally