0

我尝试将 OAUTH2 功能添加到我现有的 App Engine 应用程序中,但遇到了一些问题,我感谢任何建议。

以下是我的步骤: 1. 在 Google Api Console 中创建客户端 ID,并创建 OAUTH 流;2.用户访问该login页面后,将被重定向到谷歌登录页面;3.一旦他们同意条款,用户将被重定向到我的应用程序的登录页面

from oauth2client.client import OAuth2WebServerFlow
from django.http import HttpResponseRedirect

flow = OAuth2WebServerFlow(client_id='my_client_id',
                           client_secret='my_client_secret',
                           scope='https://www.googleapis.com/auth/userinfo.email',
                           redirect_uri='http://www.example.com/')

def login(request):
    return HttpResponseRedirect(auth_uri)

def ecoLandingPage(request):
    code=request.GET.get('code', '')
    if code:
        cred = "" + code
        credentials = flow.step2_exchange(cred)

我的问题是:

  1. 用户登录并重定向到登录页面后,如果他刷新页面,则会出现以下错误,我猜与flow.step2_exchange(cred). 有没有办法来解决这个问题?

    INFO 2014-08-21 16:39:56,437 client.py:1304] 无法检索访问令牌:{

    “错误”:“invalid_grant”,

    "error_description" : "无效代码。"

    }

  2. 另外,由于我在 App Engine 上运行 Django 项目,检查当前用户信息的最佳方法是什么,因为我想在页面的右上角发布他们的名字。有什么好的例子吗?

谢谢!

4

1 回答 1

0

OAuth 可以是一个难以管理的野兽。我个人在这里做他们所做的事情并使用装饰器类。这样,它将涵盖刷新和许多其他出现的野兽。

获取用户信息用户类获取用户信息。您可以通过他们的教程看到它的实际效果。您无需担心“users.create_login_url”,因为 OAuth 无论如何都需要登录。

于 2014-08-21T18:46:15.973 回答