【问题标题】:How to use Google Acounts API in App Engine?如何在 App Engine 中使用 Google Acounts API?
【发布时间】:2011-01-24 23:58:24
【问题描述】:

我有一个基于 Python 的网络应用程序,其中一个,我想使用 Google 帐户让用户登录。这很简单,假设我的应用程序已开启:

http://myapp.appspot.com/

我想做的是在用户导航到应用程序时使用 Google 帐户身份验证屏幕“问候”用户,并且只有在登录后才能让他们看到应用程序的界面。

另一种方法是添加一个静态文件夹,比如说“高级”,在这种情况下,所有用户都可以在不登录的情况下看到应用程序的界面,但假设他们想进入:

http://myapp.appspot.com/premium/whatever.htm

因此,在这种情况下,我想将所有“/premium”网址限制为登录用户...

我知道只需将此处理程序添加到我的“app.yaml”文件中即可轻松完成:

- url: /premium/.*
  script: premium.py
  login: required

但问题是,我不明白“premium.py”内容必须是什么......

你能帮我解决这个困惑吗?谢谢!

【问题讨论】:

  • 您已经在问题中描述了答案:在您希望仅登录的任何处理程序上使用 login: required。你对什么感到困惑?
  • 好吧,我做到了,我在 app.yaml 文件中添加了示例处理程序,问题是,我创建了一个名为“premium”的静态文件夹,其中放置了所有高级内容,如果你转到:myapp.appspot.com/premium/somepage.html 您可以访问,但它从不要求登录,即使存在“login: required”参数,如果您将其添加到“premium”的静态处理程序中,它会引发错误并且永远无法访问页面,我的问题是,对于尝试访问任何“/premium”网址的用户来说,需要登录的“.py”脚本的内容是什么?我如何要求登录该 URL?
  • 您可能需要在问题中包含更多 app.yaml,确保顺序与您的实际文件匹配。您可能正在使用动态处理程序运行静态内容,反之亦然。

标签: python google-app-engine authentication


【解决方案1】:

app.yaml 解决方案应该可以工作。但你也问如何在 python 中做到这一点。要么会工作。两者都是不必要的。这里是:

from google.appengine.api import users

class Premium(webapp.RequestHandler):
  def get(self):
    user = users.get_current_user()
    if not user:
      this.redirect(users.create_login_url(this.request.uri))
    # Your normal page code here

(我假设您了解其余部分,或者您确实需要阅读 GAE hello world 教程)

清除您的浏览器cookies!特别是当您使用本地开发环境时。您可能已登录但不知道!

【讨论】:

  • 如何正确通过“app.yaml”?我上面提到的似乎不起作用:S
猜你喜欢
  • 2014-11-14
  • 1970-01-01
  • 2021-07-10
  • 2010-11-20
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 2014-09-01
相关资源
最近更新 更多