このガイドでは、Re:MindにGoogle Sign-In機能を追加するための手順を説明します。
- Firebase プロジェクトが作成済みであること
- Google Cloud Console へのアクセス権限があること
- Google Cloud Console にアクセス
- Firebase プロジェクトに対応する Google Cloud プロジェクトを選択
- 「APIとサービス」→「認証情報」に移動
- 「認証情報を作成」→「OAuth クライアント ID」を選択
- アプリケーションの種類: ウェブ アプリケーション
- 名前:
Re:Mind (Web Client for Firebase) - 承認済みの JavaScript 生成元:
http://localhosthttps://your-domain.com(本番環境のドメイン)
- 承認済みのリダイレクト URI:
http://localhosthttps://your-domain.com/__/auth/handler(Firebase Auth用)
- 「作成」をクリック
- クライアント ID をコピーして保存
- アプリケーションの種類: iOS
- 名前:
Re:Mind (iOS) - バンドル ID:
com.yuccok.reactnativetodoapp(app.config.jsと一致させる) - 「作成」をクリック
- クライアント ID をコピーして保存
- Firebase Console にアクセス
- プロジェクトを選択
- 「Authentication」→「Sign-in method」に移動
- 「Google」を有効化
- Web SDK 構成の「ウェブ クライアント ID」に、手順1で作成した Web クライアント ID を入力
- 「保存」をクリック
プロジェクトルートに .env ファイルを作成し、以下の内容を追加します:
# Google OAuth Configuration
EXPO_PUBLIC_GOOGLE_WEB_CLIENT_ID=your-web-client-id.apps.googleusercontent.com
EXPO_PUBLIC_GOOGLE_IOS_CLIENT_ID=your-ios-client-id.apps.googleusercontent.com重要: .env ファイルは .gitignore に含まれているため、Git にコミットされません。
app.config.js に以下が含まれていることを確認:
ios: {
bundleIdentifier: "com.yuccok.reactnativetodoapp",
infoPlist: {
CFBundleURLTypes: [
{
CFBundleURLSchemes: [
"com.googleusercontent.apps.YOUR-IOS-CLIENT-ID"
]
}
]
}
}注意: YOUR-IOS-CLIENT-ID の部分を、実際の iOS クライアント ID(数字の部分のみ)に置き換えてください。
例: クライアント ID が 123456789-abc.apps.googleusercontent.com の場合
→ com.googleusercontent.apps.123456789-abc
- Firebase Console から最新の
GoogleService-Info.plistをダウンロード ios/ディレクトリに配置(既存のファイルを上書き)
# 依存関係のインストール
npm install
# iOS Pods のインストール
cd ios && pod install && cd ..
# 開発ビルドの実行
npx expo run:ios- Web クライアント ID が正しく設定されているか確認
.envファイルが正しく読み込まれているか確認- アプリを再起動
- iOS クライアント ID が正しいか確認
- バンドル ID が Google Cloud Console の設定と一致しているか確認
- URL スキームが正しく設定されているか確認
- Firebase Console で Google 認証が有効になっているか確認
- Web SDK 構成の Web クライアント ID が正しいか確認
-
環境変数の管理
.envファイルは絶対に Git にコミットしないでください- 本番環境では EAS Secrets を使用してください
-
クライアント ID の保護
- iOS クライアント ID は公開されても問題ありませんが、バンドル ID で制限されています
- Web クライアント ID も公開されますが、承認済みドメインで制限されています
-
Firebase セキュリティルール
- Firestore のセキュリティルールで適切なアクセス制御を実装してください