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)