Google OAuth 2.0 обменивается токеном доступа к форме кода

У меня есть простое веб-приложение, в котором я использую поток Google OAUTH. Веб-приложение переходит к /oauth который запускает поток oauth. Затем сервер авторизации перенаправляет клиента на /oauth2callback, Я пробую это локально, и первый шаг работает нормально. Сервер может перенаправить клиента на сервер авторизации Google и получить code это должно быть обменено на токен доступа. Тем не менее, когда я пытаюсь обменять code с помощью flow.step2_exchange http запросы зависают очень долго. Обычно запрос истекает. Время от времени я получаю ответ с действительным токеном доступа, который заставляет меня поверить, что логика (вообще говоря) здравая.

Кто-нибудь знает, что может заставить Google отложить ответ на 30 секунд или более? Может ли быть так, что Google душит запросы на разработку? Кто-нибудь сталкивался с чем-то подобным раньше? Есть ли что-то, что я делаю не так? Я должен отметить, что в настоящее время я использую собственную библиотеку Google oauth2, но я попытался создать http-запросы вручную, но это тоже не помогло. Это все еще висит на https://accounts.google.com/o/oauth2/token,

Это код колбы для потока oauth:

from oauth2client.client import OAuth2WebServerFlow

@app.route('/oauth', methods=['GET'])
def oauth():
    print "oauth called: "
    flow = OAuth2WebServerFlow(
        client_id=config.GOOGLE_OAUTH_CLIENT_ID,
        client_secret=config.GOOGLE_OAUTH_CLIENT_SECRET,
        scope='https://www.googleapis.com/auth/userinfo.email',
        redirect_uri='http://localhost:6060/oauth2callback')
    auth_uri = flow.step1_get_authorize_url()
    return redirect(auth_uri)


@app.route('/oauth2callback', methods=["GET"])
def oauth_callback():
    code = request.args['code']
    flow = OAuth2WebServerFlow(
        client_id=config.GOOGLE_OAUTH_CLIENT_ID,
        client_secret=config.GOOGLE_OAUTH_CLIENT_SECRET,
        scope='https://www.googleapis.com/auth/userinfo.email',
        redirect_uri='http://localhost:6060/oauth2callback')
    credentials = flow.step2_exchange(code)

0 ответов

Другие вопросы по тегам