api
アカウント
mastodon
qiitadon

Mastodon ユーザーのユーザID番号の簡単な確認方法

ユーザーID番号が知りたい

マストドンの API で、ユーザー ID を使ってちょっと試したいので「ユーザーの ID 番号が知りたい」場合の確認・取得方法。つまり、 @hoge でなく数値の方の ID

簡単な方法

Mastodon 上でアカウントのアイコンをクリックした時の URL に記載されているのが ID

  1. マストドンの Web 上から「ホーム」や「ローカル」のタイムラインで、対象となる(IDを知りたい)アカウントのトゥートを探す(自分の ID だったら自分のトゥート)
  2. カウントのアイコンをクリック
  3. URLの末尾のの数値(https://<ドメイン>/web/account/xxxxx の場合 xxxxx

API で自分のアカウント ID の ID 番号を確認する方法

get_account_id.php
$access_token = 'xxxxxxxxxxxxx'; //※1
$domain       = 'sample.com';
$endpoint     = '/api/v1/accounts/verify_credentials'; //※2
$HTTP_method  = 'GET'; //※3

$query  = '';
$query .= " --header 'Authorization: Bearer ${access_token}'"; //※4
$query .= " -sS https://${domain}${endpoint};"; //※5

$command = "curl -X ${HTTP_method}${query}"; //※6

$result_json  = `$command`; //※7
$result_array = json_decode($result_json, JSON_OBJECT_AS_ARRAY);
$id_mine      = $result_array['id'];

echo $id_mine;
  • ※1:アクセス・トークンはマストドンのユーザー・アカウント画面の「開発」から発行すると楽です。
  • ※2:エンドポイント(REST でのリクエスト先 URL)
    トークンを認証したユーザーの情報を取得するエンドポイント。MastodonAPI のリファレンスの Mastodon API メソッド一覧より、要件に近いメソッドが「Accounts」メソッドなので、そのエンドポイントを確認します。(下図参照)
  • ※3:HTTP メソッド
    リファレンスのエンドポイントの文頭に記述されている HTTP メソッド(GET, POST, PUT, DELTE, PATCH)を控えます(下図参照)。これは、エンドポイントに HTTP リクエストする際に cURL オプションで指定するリクエスト・タイプです。
  • ※4:ヘッダにアクセストークンを指定
  • ※5:エンドポイントを完成させます
  • ※6:cURL の実行コマンド。あえて PHP の cURL 関数は使っていません。
  • ※7:アンサンクラーブ/バッククォート「`」で囲ってコマンド実行しています。

Mastodon API のプロトコルの読み方

RESTful な WebAPI の扱いに慣れていない方で、他の情報を得たい場合に、今回の「アカウント ID を得る」場合を例に Mastodon APIプロトコルの読み解き方(探し方)を説明したいと思います。

まずは、Mastodon API の仕様書から、「アカウント」に関する項目を探し、リクエスト先(叩く URL)を探します。

スクリーンショット 2017-12-11 2.05.42.png

上記からGET で HTTP リクエストすればカレント・ユーザー情報が得られる、つまり https://<your mastodon domain>/api/v1/accounts/verify_credentials を叩く/アクセスすると現在のユーザー情報が得られそうなのがわかります。

Returns the authenticated user's Account.

上記より認証されたユーザー、つまり HTTP リクエスト時にヘッダーに Authorization: Bearer で添えたアクセストークンの所有者(発行者)が、カレント・ユーザー(現在のユーザー)であることがわかります。逆に言うと、この API のエンドポイントを叩くにはアクセストークンが必須であることも読み取れます。

次に、リクエストのレスポンスで得られる情報(アクセスして返される情報)は「Account」であることがわかります。

Mastodn API の 「Account」欄を見ると、この返されるデータはエンティティと呼ばれる JSON オブジェクトであることがわかります。つまり、HTTP ヘッダーに Content-Typeapplication/json が付いた文字列がレスポンスで戻ってくることがわかります。

この返されたデータ(Enitity of Account)のフォーマットと見ると、「id」の要素(項目)があるので、これを参照すれば、ユーザーの ID 番号が取得できます。

参考資料