OAuthException: google geçersiz yanıt

oy
17

Bu yüzden google bulut kabuğundan benim Matara uygulama çalıştırıyorum. Bu uygulamadaki kullanıcı kendi google hesabı ile giriş yapmak gerekiyor. Ben bulut kabuğu kullanarak gerekli tüm kütüphaneleri yüklü.

Bulut kabuğunda uygulamayı çalıştırdığınızda, google hesabını seçtikten sonra ben ile benim uygulamasına giriş yapmayı isterim, bu hata gelir

flask_oauth.OAuthException
OAuthException: Invalid response from google

Her şey yerel ana bilgisayardan çalıştırmak eğer iyi çalışır.

her türlü yardım büyük beğeni toplamaktadır.

Not: Bu kodu

Flask.py:

import logging
from flask import Flask, render_template, redirect, url_for, session, make_response
from flask_oauth import OAuth
from urllib2 import Request, urlopen, URLError
import MySQLdb
import os
import json

Client_Id = my client id
Client_Secret = my client secret
Redirect_URI = '/callback'

SECRET_KEY = 'funny cat'
DEBUG = True

app = Flask(__name__)
app.debug = DEBUG
app.secret_key = SECRET_KEY
oauth = OAuth()

google = oauth.remote_app('google', base_url='https://www.google.com/accounts/', authorize_url='https://accounts.google.com/o/oauth2/auth', request_token_url=None, request_token_params={'scope': 'https://www.googleapis.com/auth/userinfo.profile', 'response_type': 'code'}, access_token_url='https://accounts.google.com/o/oauth2/token', access_token_method='POST', access_token_params={'grant_type': 'authorization_code'}, consumer_key=Client_Id, consumer_secret=Client_Secret)

@app.route('/')
def index():
    return render_template(webpage1.html)                  

@app.route('/login',methods=['post','get'])
def login():
    access_token = session.get('access_token')
    if access_token is None:
        return redirect(url_for('direct'))

    access_token = access_token[0]
    headers = {'Authorization': 'OAuth '+access_token}
    req = Request('https://www.googleapis.com/oauth2/v1/userinfo',
                  None, headers)
    try:
        res = urlopen(req)
    except URLError, e:
        if e.code == 401:
            session.pop('access_token', None)
            return redirect(url_for('direct'))
        return res.read()
    data = json.load(res)
    return render_template(webpage2.html, data = data)

@app.route('/direct')
def direct():
    callback=url_for('authorized', _external=True)
    return google.authorize(callback=callback)

@app.route(Redirect_URI)
@google.authorized_handler
def authorized(resp):
    access_token = resp['access_token']
    session['access_token'] = access_token, ''
    return redirect(url_for('login'))

@app.route('/logout')
def logout():
    session.pop('access_token', None)
    return redirect(url_for('index'))

@google.tokengetter
def get_access_token():
    return session.get('access_token')

if __name__ == __main__:
    app.run(host='0.0.0.0', debug=True)

API mektuplarım

Authorized JavaScript origins : https://5000-dot-4778310-dot-devshell.appspot.com   
Authorized redirect URIs : https://5000-dot-4778310-dot-devshell.appspot.com/callback   

Neden proje adı aynı müşteri kimliği ve müşteri sırrı farklıdır?

Oluştur 17/11/2018 saat 18:55
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Bu soru gerçekten ne bir Google Cloud Shell VM içinde çalışan Flask / Python kullanarak kurulum Google OAuth 2.0'a.

localhost modu ve geri arama modu: Google OAuth 2.0 yetkilendirme iki modda peformed edilebilir.

localhost modu

Tüm bu kimlik doğrulama işlemi yerel olarak çalışan bir web sunucusu ile aynı makinede içerisinde yapılması gerekir. Google Alanı bağlanan web tarayıcısı da aynı makinenin içinde çalışıyor olması gerekir. tarayıcı farklı bir makinede (veya VM) üzerinde çalışan edilemez. Bulut Kabuk bir web tarayıcı yok olduğundan, bu mod mümkün değildir.

Geri arama modu

Bu web sunucusu yapılandırılmış TLS çalıştırmasını gerektirir. Google OAuth 2.0 yalnızca bir HTTPS bitiş noktasına bir geri arama url destekler. Bu aynı zamanda doğrulanmış bir alan adı ve bir SSL sertifikası gerektirir. Cloud Kabuk alan adını kontrol, ne kurma, sertifikanın özel anahtara sahip ne yana TLS mümkün değildir.

Bu nedenle, bu sorunun cevabı Google OAuth 2.0 kimlik ele Bulut Kabuğu'nda çalıştıran bir sunucu işlemi kurulumu mümkün olmadığıdır.

Bu kullanıcının durumda, geri arama URL onun Matara web sunucusu nasıl yapılandırıldı eşleşmedi. Bu durumda, doğru geri arama URL yapılandırılması mümkün değildir.

Cevap 18/11/2018 saat 06:54
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more