カテゴリ: React 更新日: 2026/01/04

ReactでFetch APIと認証トークンを扱う方法を解説!初心者でも安心のやさしい解説

Fetch APIで認証トークンを扱う方法
Fetch APIで認証トークンを扱う方法

先生と生徒の会話形式で理解しよう

生徒

「Reactでサーバーにデータを送るとき、ログインしているユーザーだけにしたい場合はどうすればいいんですか?」

先生

「その場合は、Fetch APIを使って、認証トークン(アクセストークン)をHTTPリクエストの中に含める方法がよく使われますよ。」

生徒

「認証トークンって何ですか?どうやって使うんですか?」

先生

「じゃあ今回は、ReactでFetch APIと認証トークンの基本的な使い方を丁寧に見ていきましょう!」

1. 認証トークンとは?

1. 認証トークンとは?
1. 認証トークンとは?

まず、「認証トークン」という言葉に慣れておきましょう。これは、ログインしているユーザーが本当に正しいかどうかをサーバー側に伝えるための「合言葉」のようなものです。多くのWebアプリでは、ログイン後に「アクセストークン」と呼ばれる文字列を発行して、それを次回以降の通信に使います。

このトークンをHTTPヘッダーに含めることで、サーバーは「この人はログイン済みだな」と判断できます。これにより、ログインしていない人には情報を渡さないようにする仕組みが作れるのです。

2. ReactでFetch APIを使うとは?

2. ReactでFetch APIを使うとは?
2. ReactでFetch APIを使うとは?

Fetch APIは、JavaScriptでサーバーとデータのやりとり(通信)を行うための標準的な方法です。たとえば、ログイン済みのユーザーがボタンをクリックしたときに、サーバーから情報を取得したり、逆にデータを送信したりできます。

Reactでは、イベント(ボタンのクリックなど)にあわせて、Fetch APIを使って非同期にデータ通信することが多く、そこに認証トークンを組み合わせることで、セキュリティを保ったままサーバーとやりとりできます。

3. Fetch APIで認証トークンを使う基本の書き方

3. Fetch APIで認証トークンを使う基本の書き方
3. Fetch APIで認証トークンを使う基本の書き方

では実際に、Reactでアクセストークンを使ってAPIにリクエストを送る基本的なコードを見てみましょう。ここでは、トークンは仮に「localStorage」に保存されていると仮定します。


import React, { useState } from "react";

function App() {
  const [data, setData] = useState(null);

  const fetchData = async () => {
    const token = localStorage.getItem("access_token");

    const response = await fetch("https://api.example.com/secret", {
      method: "GET",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`
      }
    });

    if (response.ok) {
      const result = await response.json();
      setData(result.message);
    } else {
      setData("取得に失敗しました");
    }
  };

  return (
    <div>
      <h1>サーバーからのメッセージ: {data}</h1>
      <button onClick={fetchData}>データを取得する</button>
    </div>
  );
}

export default App;
(画面に「サーバーからのメッセージ: ◯◯」と表示され、ボタンを押すとサーバーから取得した内容が表示されます)

4. Authorizationヘッダーって何?

4. Authorizationヘッダーって何?
4. Authorizationヘッダーって何?

Fetch APIで認証トークンを送るには、HTTPリクエストの中にある「headers(ヘッダー)」という場所にトークンを入れます。その中でも「Authorization」という名前のヘッダーを使うのが一般的です。

書き方は "Authorization": "Bearer トークン" のようになります。この"Bearer"(ベアラー)は「持っているだけで権限がある」という意味の英単語で、アクセストークンとセットで使うルールになっています。

5. ローカルストレージとは?

5. ローカルストレージとは?
5. ローカルストレージとは?

Reactやブラウザでトークンを保存する場所として、「localStorage(ローカルストレージ)」がよく使われます。これは、ブラウザの中にちょっとしたデータを保存しておける機能です。

たとえばログインしたときに、以下のように保存します:


localStorage.setItem("access_token", "abc123token");

そして、必要なときに localStorage.getItem("access_token") で読み出します。

6. POSTメソッドでトークン付きデータ送信する方法

6. POSTメソッドでトークン付きデータ送信する方法
6. POSTメソッドでトークン付きデータ送信する方法

GETだけでなく、POST(ポスト)でデータをサーバーに送るときも、Authorizationヘッダーを使う方法は同じです。


const postData = async () => {
  const token = localStorage.getItem("access_token");

  const response = await fetch("https://api.example.com/submit", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Authorization": `Bearer ${token}`
    },
    body: JSON.stringify({
      name: "太郎",
      email: "taro@example.com"
    })
  });

  const result = await response.json();
  console.log(result);
};

これで、「ログイン中のユーザーだけがデータを送信できる」ような安全なAPI通信ができます。

7. よくある間違いと注意点

7. よくある間違いと注意点
7. よくある間違いと注意点
  • トークンがnullのまま送られてしまう: ログインしていない状態でAPIを呼び出すと、トークンが空のまま送られてしまいます。事前に確認しましょう。
  • トークンの有効期限切れ: 多くのアクセストークンには期限があります。期限が切れるとエラーになります。
  • トークンの保存場所: セキュリティ上、localStorageよりもHttpOnlyなCookieが安全と言われることもありますが、初心者向けにはlocalStorageのほうが理解しやすいです。

8. 認証が必要なAPI設計におけるReactの役割

8. 認証が必要なAPI設計におけるReactの役割
8. 認証が必要なAPI設計におけるReactの役割

React側では「トークンを取得して、通信時に付け加える」という役割を持ちます。サーバー(バックエンド)は、トークンが正しいかどうかを検証します。

つまりReactは「トークンをつけて通信するメッセンジャー」、サーバーは「それが本物かを確認する門番」のような関係ですね。

まとめ

まとめ
まとめ

ReactでFetch APIと認証トークンを組み合わせて扱う流れを振り返ると、まず認証トークンという概念がとても重要であることがわかります。認証トークンは、利用者が正しくログインしているかどうかを示す鍵のような存在であり、サーバーとやり取りする際の安全性を高めてくれます。特に、HTTPヘッダーの中にあるAuthorizationヘッダーと組み合わせることで、ログイン済みの利用者だけが安全にデータへアクセスできるしくみがつくられます。こうしたしくみは現代の多くのWebアプリで使われており、ReactとFetch APIを自然に使いこなすためにも欠かせない考え方です。 また、ReactではlocalStorageを使ってアクセストークンを保持し、非同期通信のたびに取り出してヘッダーへ追加する処理が中心となります。この流れが理解できると、GETやPOSTといったHTTPメソッドを使う際の応用も自然と広がり、サーバーとの通信の幅もぐっと広がります。フォーム送信、ユーザー情報の取得、設定データの保存など、多くの操作が安全な通信として実現できるようになり、実際の開発でも役立ちます。 さらに、Fetch APIではレスポンスの取得、JSONの変換、エラー処理など、細かい工程も丁寧に扱う必要があります。特に認証トークンは有効期限がある場合が多く、期限切れによるエラーや、トークンが存在しないままリクエストを送ってしまうといった問題も起きがちです。こうした点を意識しておくことで、より堅牢で扱いやすいReactアプリがつくれるようになります。 以下に、今回学んだポイントを含めたサンプルコードを振り返りとして再掲します。

サンプルプログラムの振り返り


function SecureFetch() {
  const sendRequest = async () => {
    const token = localStorage.getItem("access_token");

    const response = await fetch("https://api.example.com/secure-data", {
      method: "GET",
      headers: {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`
      }
    });

    const result = await response.json();
    console.log(result);
  };

  return (
    <div class="secure-box">
      <button class="btn btn-primary" onClick={sendRequest}>
        安全なデータ取得
      </button>
    </div>
  );
}

このようにReactでは、イベントと通信処理が結びつき、認証情報を適切に扱うことで安全なWebアプリケーション構築へつながります。今回の内容を押さえることで、認証が必要なAPIとの連携も格段に理解しやすくなり、実践的な開発スキルとして必ず役立つ知識になります。Fetch APIと認証トークンを組み合わせる仕組みは、初心者がつまずきやすい部分でもあるため、丁寧に流れを追うことで確実に理解を深めていくことができます。

先生と生徒の振り返り会話

生徒

「きょうの学習で、Fetch APIと認証トークンをどう使うかがよくわかりました。Authorizationヘッダーの仕組みも理解できました!」

先生

「うん、とても大事なポイントをしっかり押さえられたね。Reactでの通信はトークン管理が基本になるから、今回の理解が今後きっと役立つよ。」

生徒

「localStorageに保存して、必要なときに取り出してヘッダーに付ける流れも自然に理解できました!」

先生

「その調子。次はエラー処理や期限切れの対策にも触れてみると、より実践的なアプリが作れるようになるよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

ReactでFetch APIと認証トークンを使う理由は何ですか?

ReactでFetch APIと認証トークンを使う理由は、ログイン済みのユーザーだけが安全にサーバーへアクセスできるようにするためです。認証トークンをヘッダーに含めて送信することで、サーバー側が正しいユーザーであることを確認できる仕組みになります。
カテゴリの一覧へ
新着記事
New1
React
Reactコンポーネントの再利用と分割を完全マスター!初心者でもわかるコンポーネント設計
New2
React
ReactでAxiosインターセプターの使い方を完全ガイド!初心者でもわかるリクエストとレスポンスの処理方法
New3
React
JSXの書き方!初心者でもわかるReactタグと属性の基本ルール解説
New4
React
ReactとDockerを使った開発環境構築の基本を徹底解説!初心者でもわかるReactとDockerの連携方法
人気記事
No.1
Java&Spring記事人気No1
React
ReactでonChangeイベントを使ってフォーム入力値を管理する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
React
ReactとTypeScriptの環境構築をやさしく解説!Viteとtsconfigの設定も丁寧に紹介
No.3
Java&Spring記事人気No3
React
Reactのイベントハンドリングのアンチパターンまとめ!初心者でもわかる注意点
No.4
Java&Spring記事人気No4
React
Reactのカスタムフックの作り方を完全ガイド!再利用可能なロジックを切り出す仕組み
No.5
Java&Spring記事人気No5
React
ReactでFetch APIのローディング状態を管理する方法|初心者にもわかる解説
No.6
Java&Spring記事人気No6
React
create-react-appでReactプロジェクトを作成する手順を初心者向けに完全解説!
No.7
Java&Spring記事人気No7
React
ReactのuseStateとuseEffectでよくあるエラーと解決方法ガイド!初心者でもわかるReactフック
No.8
Java&Spring記事人気No8
React
Reactでファイルアップロードを実装する方法を解説!Fetch APIで画像やPDFを送る仕組みを初心者向けに紹介