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`
- ホスト: Mastodon サーバ（インスタンス）のドメイン名
- エンドポイント: `/api/v1/accounts/verify_credentials`
- アクセストークン: 必須 （要 `Authorization: Bearer` HTTP ヘッダ）

```get_account_id.php
$access_token = 'xxxxxxxxxxxxx'; //※１
$domain       = 'sample.com';
$endpoint     = '/api/v1/accounts/verify_credentials'; //※２
$HTTP_method  = 'GET'; //※３

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

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

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

echo $id_mine;
```

- ※１：アクセス・トークンはマストドンのユーザー・アカウント画面の「開発」から発行すると楽です。
- ※２：エンドポイント（REST でのリクエスト先 URL）<br>トークンを認証したユーザーの情報を取得するエンドポイント。[MastodonAPI のリファレンス](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md)の Mastodon API メソッド一覧より、要件に近いメソッドが[「Accounts」メソッド](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md#accounts)なので、そのエンドポイントを確認します。（下図参照）
- ※３：HTTP メソッド<br>リファレンスのエンドポイントの文頭に記述されている HTTP メソッド（GET, POST, PUT, DELTE, PATCH）を控えます（下図参照）。これは、エンドポイントに HTTP リクエストする際に cURL オプションで指定するリクエスト・タイプです。
- ※４：ヘッダにアクセストークンを指定
- ※５：エンドポイントを完成させます
- ※６：cURL の実行コマンド。あえて PHP の `cURL` 関数は使っていません。
- ※７：アンサンクラーブ／バッククォート[「`」で囲ってコマンド実行](http://php.net/manual/ja/language.operators.execution.php)しています。

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

[RESTful](https://www.google.co.jp/search?q=site:qiita.com+RESTful%E3%81%A8%E3%81%AF) な WebAPI の扱いに慣れていない方で、今回の「アカウント ID を得る」場合を例に [Mastodon API](https://docs.joinmastodon.org/api/) の[プロトコル](https://qiita.com/KEINOS/items/cb7f629268b90ef6493d)の読み解き方（探し方）を説明したいと思います。他の情報を得たい場合などの参考にしてください。

まずは、[Mastodon API の仕様書](https://docs.joinmastodon.org/api/)の `API METHODS` から、「アカウント」に関する項目を探し、リクエスト先（叩く URL）を探します。

|<img width="800" alt="スクリーンショット 2017-12-11 2.05.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/78776/1f57ed1e-6c53-1912-8a50-8a95cb35d74f.png">|
|:-:|

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

> Returns the authenticated user's [Account](https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md#account).

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

次に、リクエストのレスポンスで得られる情報（アクセスして返される情報）は「[Account](https://docs.joinmastodon.org/entities/account/)」であることがわかります。

次に [Mastodn API の「Account」欄を見る](https://docs.joinmastodon.org/entities/account/)と、この返されるデータは[エンティティ](http://e-words.jp/w/%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%83%86%E3%82%A3.html)と呼ばれる JSON オブジェクトであることがわかります。つまり、HTTP ヘッダーに `Content-Type` が `application/json` が付いた文字列がレスポンスで戻ってくることがわかります。

この返されたデータ（[Enitity of Account](https://docs.joinmastodon.org/entities/account/)）のフォーマットと見ると、「`id`」の要素（項目）があるので、これを参照すれば、ユーザーの ID 番号が取得できます。

## 参考資料
- Mastodon API<br>https://github.com/tootsuite/documentation/blob/master/Using-the-API/API.md#getting-the-current-user