cari
Soal Jawab dapatkan akses ke https://accounts.google .com/o/oauth2/v2/auth disekat oleh CORS

0

Saya menghantar pengambilan daripada React to Express untuk mengesahkan dengan Google, tetapi akses saya disekat oleh ralat CORS. Saya mengubah hala permintaan POST daripada React ke URL Google untuk pengesahan. Saya cuba menggunakan cors dalam aplikasi Express tetapi masih mendapat ralat yang sama. kerana mendapatkan

const handleClick = (e) => {
    fetch('http://localhost:8000/api/mail/login', {
        method: 'POST'
    })
    .then(res => res.text())
}

Menggunakan kor dalam aplikasi Express.js

app.use(cors())

Cuba ubah hala ke Pengesahan Google

const oauth2Client = new google.auth.OAuth2(
    process.env.CLIENT_ID,
    process.env.CLIENT_SECRET,
    process.env.REDIRECT_URI
)

const url = oauth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: process.env.SCOPE
})

const gmail = google.gmail({
    version: 'v1',
    auth: oauth2Client
})

router.post('/login', (req, res, next) => {
    res.redirect(url)
})

Ralat: Mengakses "https://accounts.google .com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fmail.google.com%2F&response_type=code&client_id=727520060136" untuk pengekstrakan - ngpfsfd42llfc29ttvd42 apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8000' (dilencongkan daripada 'http://localhost:8000/api/mail/login') daripada asal 'http://localhost:3000' telah menjadi Dasar CORS Menyekat: Pengepala 'Access-Control-Allow-Origin' tidak wujud pada sumber yang diminta. Jika respons legap memenuhi keperluan anda, tetapkan mod permintaan kepada "no-cors" untuk mendapatkan sumber dengan CORS dilumpuhkan.

Your Answer
serahkan

1 jawapan
0

Aliran pengesahan mesti berlaku dalam konteks penyemakan imbas yang boleh dilihat, tanpa menggunakan fetch permintaan. Dalam erti kata lain: anda mesti menavigasi tab semasa anda ke (atau membuka tab baharu) http://localhost:8000/api/mail/login, yang akan diubah hala ke https:// accounts.google. com/o/oauth2/v2/auth?... dan halaman menjadi kelihatan. Pengguna kini mesti berinteraksi dengan halaman untuk memilih/mengesahkan akaun Google mereka, selepas itu mereka akan diubah hala ke halaman pada pelayan anda dengan kod kebenaran dalam URL (contohnya, kod http://localhost:8000/callback? =...) dan pelayan anda mesti menukar kod kebenaran untuk token akses melalui panggilan pelayan ke pelayan.

Tiada permintaan yang dibuat dengan cara ini adalah silang asal, jadi CORS tidak terlibat sama sekali.

Anda memerlukan borang log masuk yang serupa, bukan fungsi handleClick

<form action="http://localhost:8000/api/mail/login" method="post">
  <input type="submit" value="Press to log in"/>
</form>
2023-11-04 09:56:59

serahkan

Hot Tools

vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)

vc9-vc14 (32+64 bit) koleksi perpustakaan masa jalan (pautan di bawah)

Muat turun koleksi perpustakaan runtime yang diperlukan untuk pemasangan phpStudy

VC9 32-bit

VC9 32-bit

VC9 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu

Kotak alat pengaturcara PHP versi penuh

Kotak alat pengaturcara PHP versi penuh

Programmer Toolbox v1.0 PHP Persekitaran Bersepadu

VC11 32-bit

VC11 32-bit

VC11 32-bit phpstudy pustaka masa jalan persekitaran pemasangan bersepadu

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan