APIキーやトークンは、APIを使うときに一緒に送る「身分証」や「許可証」のようなもの。
誰の利用か、どこまで使ってよいかをAPI側が確認するために使います。
APIキーは「どのアプリか」を伝える鍵
APIキーは、APIを利用するアプリや開発者を識別するための文字列です。天気APIや地図APIなどを使うとき、サービス側はAPIキーを見て「誰からの利用か」を確認します。
鍵という名前ですが、家の鍵のように何でも開けられるものではありません。利用量の計測、料金の管理、不正利用の停止などに使われる、サービス利用の識別子と考えると分かりやすいです。
どのアプリや開発者からのリクエストかを確認する。
リクエスト回数や料金、制限の判定に使われる。
第三者に使われると、自分の利用として扱われることがある。
トークンは「何をしてよいか」を伝える許可証
トークンは、ログインや認可の後に発行されることが多い、期限付きの許可証です。APIはトークンを見て、どのユーザーが、どの範囲まで操作できるかを確認します。
たとえば「プロフィールを読むだけ」「投稿を作成できる」「管理画面は使えない」のように、できる範囲を絞って扱えるのがトークンの大事な役割です。
主にアプリや開発者を識別し、サービス利用を管理する。
主にユーザーの許可や操作できる範囲を表す。
トークンは短い期限で切れ、再発行されることが多い。
リクエストに添えてAPIへ送る
APIキーやトークンは、APIへリクエストするときに一緒に送ります。よくある形は、HTTPヘッダーに Authorization として入れる方法です。
ただし、送る場所や名前はAPIごとに違います。利用するサービスの説明書を読み、指定された方法で送る必要があります。
画面に直接書かない
APIキーやトークンは、他人に見られると勝手に使われる可能性があります。HTMLやブラウザで動くJavaScriptに直接書くと、ページを見た人から読めてしまいます。
サーバー側で扱う、環境変数に置く、不要になったら無効化するなど、公開されない場所で管理します。スクリーンショットやサンプルコードに本物のキーを載せないことも大切です。
ブラウザへ渡さず、必要な処理をサーバーからAPIへ送る。
コードとは別の場所で値を管理し、公開リポジトリに入れない。
流出したキーやトークンは無効化し、新しいものに切り替える。
ここまでのまとめ
APIキーは、主に「どのアプリや開発者からの利用か」を伝えるものです。トークンは、主に「誰が、どの範囲まで許可されたか」を伝えるものです。
APIキーやトークンは、APIを使うための大事な合い言葉。使い方より先に、漏らさない置き場所を決めておくのが安心です。
このUIを実装してみよう