我尝试将OAUTH2功能添加到我现有的App Engine应用程序中,但遇到了一些问题,我很感激任何建议。
以下是我的步骤:
1.在Google Api控制台中创建客户端ID,并创建OAUTH流程;
2.用户访问login
页面后,系统会将其重定向到Google登录页面;
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)
我的问题是:
用户登录并重定向到目标网页后,如果他刷新页面,则会出现以下错误,我猜这与flow.step2_exchange(cred)
有关。有办法解决这个问题吗?
INFO 2014-08-21 16:39:55,837 client.py:1304]无法检索访问令牌:{
“错误”:“invalid_grant”,
“error_description”:“代码无效。”
}
此外,由于我在App Engine上运行Django项目,检查当前用户信息的最佳方法是什么,因为我想在页面的右上角发布他们的名字。有什么好的例子吗?
谢谢!
答案 0 :(得分:1)
OAuth可以成为一个可以管理的野兽。我个人做他们做的事here并使用装饰者类。这样它将涵盖刷新和许多其他出现的野兽。
获取用户信息user class以获取用户信息。您可以通过他们的Tutorial查看它。您不必担心用户.create_login_url'因为theOAuth需要登录。