Rumah  >  Soal Jawab  >  teks badan

Log Masuk Google tidak berfungsi dalam Next.js dengan Firebase kerana ralat Polisi-Pembuka-Silang Asal

<p>Saya sedang membangunkan aplikasi web menggunakan Next.js dan Firebase. Saya telah berjaya melaksanakan Log Masuk Google dalam aplikasi saya, tetapi saya menghadapi masalah yang menghalang proses log masuk daripada selesai seperti yang diharapkan. </p> <p>Apabila saya cuba log masuk, pop timbul muncul seperti yang dijangkakan. Walau bagaimanapun, dalam konsol saya melihat ralat berikut: </p> <pre class="brush:php;toolbar:false;">Dasar-Dasar-Pembuka-Cross-Origin akan menyekat tetingkap.panggilan tertutup.</pre> <p>Disebabkan ralat ini, proses log masuk tidak dapat diselesaikan dan pengguna tidak boleh log masuk dengan betul. </p> <p>Sesetengah konteks lanjut: Saya sedang menguji fungsi ini dalam persekitaran pembangunan pada localhost. <strong>Isu ini wujud pada Chrome tetapi bukan Firefox. </strong></p> <p>Adakah ralat ini disebabkan oleh salah konfigurasi Dasar-Pembuka-Silang Asal? Jika ya, bagaimanakah saya boleh mengkonfigurasi dasar ini dengan betul dalam aplikasi Next.js saya untuk Log Masuk Google dengan Firebase? </p>
P粉020085599P粉020085599396 hari yang lalu890

membalas semua(2)saya akan balas

  • P粉616111038

    P粉6161110382023-08-26 18:51:46

    Ya, ini mungkin ada kaitan dengan konfigurasi COOP halaman anda, halaman log masuk dan cara ia berinteraksi. Apabila dua halaman tidak mempunyai COOP yang sama, halaman tersebut akan berada dalam kumpulan konteks penyemakan imbas yang berasingan, yang mungkin menghalang interaksi tertentu, seperti kaedah window.close.

    Sukar untuk memberikan penyelesaian yang tepat tanpa melihat kod dan pelaksanaan anda, tetapi anda boleh cuba mengubah suai COOP anda supaya ia sepadan dengan COOP halaman log masuk. Ini boleh jadi same-originsame-origin-allow-popups.

    Pengepala ini boleh ditetapkan dalam konfigurasi NextJS: https://nextjs.org/docs/pages/api-reference/next-config-js/headers

    Dalam kes anda:

    module.exports = {
      async headers() {
        return [
          {
            source: "/(.*)",
            headers: [
              {
                key: "Cross-Origin-Opener-Policy",
                value: "same-origin", // "same-origin-allow-popups"
              },
            ],
          },
        ];
      },
    };
    

    balas
    0
  • P粉616383625

    P粉6163836252023-08-26 13:48:14

    Ini nampaknya masalah yang sudah lama tidak selesai. Walau bagaimanapun, sila cuba perkara berikut

    1. Sila semak skop - https://stackoverflow.com/a/76574604/9640177
    2. Jika anda menggunakan API Google, pastikan anda telah menetapkan domain atau URI dibenarkan yang betul pada Firebase dan GCP - https:// stackoverflow.com/a/76547658/9640177

    Anda juga boleh merujuk kepada Panduan Pengasingan Cross-Asal - https://web.dev/cross-origin-isolation-guide/ dan dokumentasi MDN untuk mengetahui lebih lanjut tentang Cross-Origin-Opener-Policy

    Jika anda menggunakan Google API, pastikan anda turut menambah URI dengan port, mis. Anda boleh menyemak tapak web langsung saya - localhost:3000https://radheshyamdas.com/ Saya menggunakan firebase auth .js yang dibina dengan Next

    balas
    0
  • Batalbalas