Skip to main content
OAuth 2.0 認証ではユーザーが個別の Google Sheets にアクセス権を付与します。ユーザー個別のデータを扱うアプリケーション向けです。

適用場面

  • ユーザー中心のアプリ — ユーザーが自分の Google Sheets にアクセス
  • マルチテナントアプリ — 異なるユーザーが異なるスプレッドシートを管理
  • 個人データアクセス — ユーザー個別アカウントのシートを読み書き
  • デスクトップ・Web アプリ — ユーザーインタラクションが可能

前提条件

  • Google Cloud Console プロジェクト
  • Google Sheets API と Google Drive API を有効化
  • Laravel Socialite(推奨)

セットアップ

1

Google Cloud Console を設定

  1. Google Cloud Console にアクセス
  2. プロジェクトを選択または新規作成
  3. APIs & Services > Library に移動
  4. 以下の API を有効化:
    • Google Sheets API
    • Google Drive API
2

OAuth 2.0 認証情報を作成

  1. APIs & Services > Credentials に移動
  2. Create Credentials > OAuth client ID をクリック
  3. OAuth 同意画面を設定(初回のみ):
    • ユーザータイプを External に選択
    • 必須項目を入力(アプリ名、サポートメール、開発者連絡先)
    • スコープを追加:https://www.googleapis.com/auth/spreadsheetshttps://www.googleapis.com/auth/drive
  4. アプリケーションタイプを Web application に選択
  5. 認可リダイレクト URI を追加:
    • 開発環境: http://localhost:8000/auth/google/callback
    • 本番環境: https://yourdomain.com/auth/google/callback
  6. Create をクリック
  7. Client IDClient Secret をコピー
3

Laravel 環境を設定

.env ファイルに追加:
config/google.php を更新:
4

Laravel Socialite をインストール

config/services.php に追加:
5

認証コントローラーを実装

6

ルートを追加

7

User モデルを更新

マイグレーション:
User モデル:
8

Sheets を使用

トークンリフレッシュ

パッケージはトークン有効期限切れを自動的に処理します:

ミドルウェア

Google 認証を必須にするミドルウェア:

セキュリティ

1. トークン保管

  • トークンはデータベースに安全に保存
  • Laravel の組み込み暗号化を使用
  • クライアント側にトークンを公開しない

2. スコープ管理

  • 必要最小限のスコープのみ要求
  • 最小権限の原則を適用
  • ユーザーに必要な権限を明確に説明

3. エラーハンドリング

  • 期限切れトークンを適切に処理
  • ユーザーフレンドリーな再認証フローを提供
  • エラーをログ記録・監視

トラブルシューティング

よくあるエラー

「redirect_uri_mismatch」エラー
  • Google Console のリダイレクト URI とアプリケーションが完全に一致しているか確認
  • http vs https の違いを確認
  • 末尾のスラッシュを確認
「invalid_grant」または「unauthorized」エラー
  • トークンが期限切れでリフレッシュに失敗
  • ユーザーに再認証を求める
  • リフレッシュトークンが存在するか確認
「access_denied」エラー
  • ユーザーが権限許可を拒否
  • 適切なメッセージで対応
  • 再認証を試みるオプションを提供

テストルート

最終更新日 2026年6月14日