• トップ
  • ブログ一覧
  • Next.jsでFirebase AuthenticationのSignInWithRedirectの実装時にハマったこととその解決策
  • Next.jsでFirebase AuthenticationのSignInWithRedirectの実装時にハマったこととその解決策

    ハク(エンジニア)ハク(エンジニア)
    2024.10.31

    IT技術

    概要

    • 特定のブラウザー(例: Safari)ではSignInWithRedirectが正常に動作しない(ログインできない)
    • アプリはFirebase Hostingを使っていない
    • SignInWithPopupを使いたくない

    実装方法

    下記の設定・実装で、SignInWithRedirectでログインできることようになったので、そのやり方を紹介します。

    Firebase側の設定

    • 左側のメニューから構築 → Authentication → 設定 → 承認済みドメインを選択
    • 自分のアプリのドメインを追加

    GCP側の設定

    • 「API とサービス」を検索して、左側のメニューから認証情報を選択
    • OAuth 2.0 クライアント IDのところにFirebaseが作った項目の詳細設定を開く
    • 「承認済みのJavaScript生成元」と「承認済みのリダイレクトURI」にそれぞれ以下の値を入力
      • 承認済みのJavaScript生成元: 自分のアプリのドメイン
      • 承認済みのリダイレクトURI:自分のアプリのドメイン/__/auth/handler

    ソースコードの修正

    リバースプロキシを設定

    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...

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background