適用場面
- ユーザー中心のアプリ — ユーザーが自分の Google Sheets にアクセス
- マルチテナントアプリ — 異なるユーザーが異なるスプレッドシートを管理
- 個人データアクセス — ユーザー個別アカウントのシートを読み書き
- デスクトップ・Web アプリ — ユーザーインタラクションが可能
前提条件
- Google Cloud Console プロジェクト
- Google Sheets API と Google Drive API を有効化
- Laravel Socialite(推奨)
セットアップ
Google Cloud Console を設定
- Google Cloud Console にアクセス
- プロジェクトを選択または新規作成
- APIs & Services > Library に移動
- 以下の API を有効化:
- Google Sheets API
- Google Drive API
OAuth 2.0 認証情報を作成
- APIs & Services > Credentials に移動
- Create Credentials > OAuth client ID をクリック
- OAuth 同意画面を設定(初回のみ):
- ユーザータイプを External に選択
- 必須項目を入力(アプリ名、サポートメール、開発者連絡先)
- スコープを追加:
https://www.googleapis.com/auth/spreadsheetsとhttps://www.googleapis.com/auth/drive
- アプリケーションタイプを Web application に選択
- 認可リダイレクト URI を追加:
- 開発環境:
http://localhost:8000/auth/google/callback - 本番環境:
https://yourdomain.com/auth/google/callback
- 開発環境:
- Create をクリック
- Client ID と Client Secret をコピー
トークンリフレッシュ
パッケージはトークン有効期限切れを自動的に処理します:ミドルウェア
Google 認証を必須にするミドルウェア:セキュリティ
1. トークン保管
- トークンはデータベースに安全に保存
- Laravel の組み込み暗号化を使用
- クライアント側にトークンを公開しない
2. スコープ管理
- 必要最小限のスコープのみ要求
- 最小権限の原則を適用
- ユーザーに必要な権限を明確に説明
3. エラーハンドリング
- 期限切れトークンを適切に処理
- ユーザーフレンドリーな再認証フローを提供
- エラーをログ記録・監視
トラブルシューティング
よくあるエラー
「redirect_uri_mismatch」エラー- Google Console のリダイレクト URI とアプリケーションが完全に一致しているか確認
- http vs https の違いを確認
- 末尾のスラッシュを確認
- トークンが期限切れでリフレッシュに失敗
- ユーザーに再認証を求める
- リフレッシュトークンが存在するか確認
- ユーザーが権限許可を拒否
- 適切なメッセージで対応
- 再認証を試みるオプションを提供