cari

Rumah  >  Soal Jawab  >  teks badan

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

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粉398117857P粉398117857464 hari yang lalu927

membalas semua(1)saya akan balas

  • P粉201448898

    P粉2014488982023-11-04 09:56:59

    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>
    

    balas
    0
  • Batalbalas