ハク(エンジニア)
Next.jsでFirebase AuthenticationのSignInWithRedirectの実装時にハマったこととその解決策
ハク(エンジニア)
2024.10.31
IT技術
概要
- 特定のブラウザー(例: Safari)ではSignInWithRedirectが正常に動作しない(ログインできない)
- その理由はサードパーティのストレージアクセスがブロックされているからです
- 参考: Firebaseの公式ドキュメント
- アプリはFirebase Hostingを使っていない
- SignInWithPopupを使いたくない
実装方法
下記の設定・実装で、SignInWithRedirectでログインできることようになったので、そのやり方を紹介します。
Firebase側の設定
- 左側のメニューから構築 → Authentication → 設定 → 承認済みドメインを選択
- 自分のアプリのドメインを追加
GCP側の設定
- 「API とサービス」を検索して、左側のメニューから認証情報を選択
- OAuth 2.0 クライアント IDのところにFirebaseが作った項目の詳細設定を開く
- 「承認済みのJavaScript生成元」と「承認済みのリダイレクトURI」にそれぞれ以下の値を入力
- 承認済みのJavaScript生成元:
自分のアプリのドメイン
- 承認済みのリダイレクトURI:
自分のアプリのドメイン/__/auth/handler
- 承認済みのJavaScript生成元:
ソースコードの修正
リバースプロキシを設定
next.config.js
に下記を追加
1async rewrites() {
2 return [
3 {
4 source: '/__/auth/:path*',
5 destination: `https://${process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID}.firebaseapp.com/__/auth/:path*`,,
6 },
7 ]
8}
上記を設定することで、/__/auth/
にアクセスするとhttps://${process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID}.firebaseapp.com/__/auth/
にリダイレクトされるようになります
envを修正
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN
の値を下記のように修正
1NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=<自分のアプリのドメイン>
上記を設定することで、ストレージへのアクセスブロックが解消されます。
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
ハク(エンジニア)
Show more...お酒が友達のバックエンドエンジニアです。 インフラとお友達になりたい…。 最近暑いので水分補給と酔分補給を怠らないようにしましょう。
おすすめ記事
immichを知ってほしい
キムくん(エンジニア)
2024.10.31