Puncte:0

Eroare de nepotrivire URI de redirecționare din aplicația Google OAuth pentru flask

drapel lu

Am o aplicație web Flask care găzduiește în Google Cloud Run și care este găzduită https://mydomain.run.app.

Acum încerc să-i adaug autentificarea Google. Am creat API-ul sub acreditările în GCP. am dat https://mydomain.run.app/authorize în uri de redirecționare, dar când am încercat să mă autent din aplicația mea, îmi afișează o eroare de nepotrivire de redirecționare. Și eroarea îmi arată http://mydomain.run.app/authorize. Nepotrivirea este https și http Când am încercat să dau http în uri de acreditări, mă aruncă

Redirecționare nevalidă: această aplicație are un statut de publicare „În producție”. URI trebuie să folosească https:// ca schemă.

@app.route('/login/google')
def google_login():
    google = oauth.create_client('google')
    redirect_uri = url_for('authorize', _external=True,_scheme='https')
    return google.authorize_redirect(redirect_uri)

@app.route('/authorize')
def autorize():
    google = oauth.create_client('google')  
    token = google.authorize_access_token()  
    resp = google.get('informații utilizator')  
    user_info = resp.json()
    utilizator = oauth.google.userinfo() 
    session['profil'] = user_info
    session.permanent = Adevărat  
    return redirect('/select')

Apoi am ajuns să cunosc aplicația mea însăși trimițând doar cerere http, așa că am încercat să adaug _scheme='https' în url_for în timpul redirecționării, dar acum primesc authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Avertisment! Declarația nu este egală în cerere și răspuns. eroare. Mi-am schimbat cheia secretă în șir static în loc de numere aleatorii pe care le-am primit din alte răspunsuri. Dar încă nu am reușit să rezolv această problemă.

Puncte:0
drapel cn

În fața serviciului tău Cloud Run se află GFE (Google FrontEnd). Aplicația dvs. se conectează la GFE folosind HTTPS sau este redirecționată la HTTPS dacă se conectează folosind HTTP.GFE se conectează la aplicația dvs. utilizând HTTP.

Aplicația dvs. crede că clientul s-a conectat folosind HTTP, așa că răspunde cu adrese URL http://. Trebuie să procesați X-Forwarded-Proto pentru a detecta metoda de conectare la client și apoi să răspundeți cu adresa URL HTTPS corectă. Uita-te la ProxyFix middleware sau similar.

drapel lu
Multumesc pentru explicatia detaliata. Dar tot primesc authlib.integrations.base_client.errors.MismatchingStateError: mismatching_state: CSRF Avertisment! Declarația nu este egală în cerere și răspuns. eroare. Va fi legat de versiunea authlib? Odată ce am schimbat _scheme, îmi dă doar https URL.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.