dapatkan akses ke https://accounts.google .com/o/oauth2/v2/auth disekat oleh CORS
P粉398117857
P粉398117857 2023-11-03 22:56:28
0
1
809

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.

P粉398117857
P粉398117857

membalas semua(1)
P粉201448898

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>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan