Google OAuth 2.0从访问令牌交换代码需要永远

时间:2015-04-07 21:33:18

标签: python google-api google-oauth google-oauth2

我有一个基本的网络应用,我使用的是Google OAUTH流程。 Web应用程序导航到/oauth,触发oauth流。授权服务器然后将客户端重定向到/oauth2callback。我在本地尝试它,第一步工作正常。服务器能够将客户端重定向到谷歌的授权服务器,并接收旨在交换访问令牌的code。但是,当我尝试使用code交换flow.step2_exchange时,http请求会挂起很长时间。通常请求超时。偶尔我会得到一个有效访问令牌的回复,这让我相信逻辑(一般来说)是合理的。

是否有人知道谷歌可能会将响应延迟30秒或更长时间?难道谷歌会限制开发请求吗?有没有人遇到过这样的事情?有什么我做错了吗?我应该注意到,我目前正在使用谷歌自己的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 个答案:

没有答案