在Google App Engine中使用users.create_login_url的NotAllowedError

Stu*_*art 8 python authentication google-app-engine

users.create_login_url基于操作指南中的示例代码,在Google App Engine中使用的基本示例遇到了问题.该示例在本地开发服务器中工作正常,但在部署到appspot.com时则不行.

import webapp2
import urllib2
from google.appengine.api import users

class Main(webapp2.RequestHandler):
    def get(self):
        login_url = users.create_login_url('/')
        self.response.write(login_url)

app = webapp2.WSGIApplication([
    ('/', 'Main'),
], debug=True)
Run Code Online (Sandbox Code Playgroud)

之前的问题(例如问题)表明问题是使用Google Apps域而不是Google Accounts API,我认为这涉及下图所示的设置.更改这些设置并未解决问题.

可能导致这种情况的原因是什么?

在此输入图像描述

小智 0

我在最后复制了它,我注意到您的代码有问题(语法错误)。\n在下面的行中删除 \xe2\x80\x98Main\xe2\x80\x99 上的素数,然后重试:

\n\n
app = webapp2.WSGIApplication([ (\'/\', Main), ], debug=True)\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果再次运行代码,\xe2\x80\x98将能够得到显示的结果。\n还要确保 app.yaml 文件中的处理程序正确。\n您的 App Engine 设置似乎没问题,除非您想使用不同的身份验证选项,否则不应更改该页面上的任何内容。默认情况下,您的应用程序将使用 Google 帐户进行身份验证。

\n\n

您可以使用以下代码来运行简单的登录页面:

\n\n
class Main(webapp2.RequestHandler):\n    def get(self):\n    # [START user_details]\n        user = users.get_current_user()\n        if user:\n            nickname = user.nickname()\n            logout_url = users.create_logout_url(\'/\')\n            greeting = \'Welcome, {}! (<a href="{}">sign out</a>)\'.format(\n                nickname, logout_url)\n        else:\n            login_url = users.create_login_url(\'/\')\n            greeting = \'<a href="{}">Sign in</a>\'.format(login_url)\n        # [END user_details]\n        self.response.write(\n            \'<html><body>{}</body></html>\'.format(greeting))\n\napp = webapp2.WSGIApplication([\n    (\'/\', Main),\n], debug=True)\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于 app.yaml:

\n\n
runtime: python27\napi_version: 1\nthreadsafe: true\n\nhandlers:\n- url: /.*\n  script: main.app\n
Run Code Online (Sandbox Code Playgroud)\n