NotAllowedError 在 Google App Engine 中使用 users.create_login_url

Posted

技术标签:

【中文标题】NotAllowedError 在 Google App Engine 中使用 users.create_login_url【英文标题】:NotAllowedError using users.create_login_url in Google App Engine 【发布时间】:2017-03-05 00:31:16 【问题描述】:

根据How-to guide 中的示例代码,我在使用 Google App Engine 中的 users.create_login_url 的一个非常基本的示例时遇到了问题。该示例在本地开发服务器中运行良好,但在部署到 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)

this one 等以前的问题表明问题是使用 Google Apps 域而不是 Google Accounts API,我认为这是指下图所示的设置。更改这些设置并不能解决问题。

这可能是什么原因造成的?

【问题讨论】:

实际发生了什么?这个生成的 url 是什么样子的? 它应该生成一个类似 /ServiceLogin?service=ah&passive=true&continue=appengine.google.com/_ah/conflogin%3Fcontinue%3Dhttps://…... 的 URL,它将用户发送到登录页面,然后返回原始页面。相反,它从 login_url = users.create_login_url('/') 行抛出 NotAllowedError 在隐身模式下可能正常工作(可能是错误的用户登录到 Google 帐户) 【参考方案1】:

我最终复制了它,我注意到您的代码存在问题(语法错误)。 在以下行中,删除“Main”上的素数并重试:

app = webapp2.WSGIApplication([ ('/', Main), ], debug=True)

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

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

class Main(webapp2.RequestHandler):
    def get(self):
    # [START user_details]
        user = users.get_current_user()
        if user:
            nickname = user.nickname()
            logout_url = users.create_logout_url('/')
            greeting = 'Welcome, ! (<a href="">sign out</a>)'.format(
                nickname, logout_url)
        else:
            login_url = users.create_login_url('/')
            greeting = '<a href="">Sign in</a>'.format(login_url)
        # [END user_details]
        self.response.write(
            '<html><body></body></html>'.format(greeting))

app = webapp2.WSGIApplication([
    ('/', Main),
], debug=True)

对于 app.yaml:

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

【讨论】:

以上是关于NotAllowedError 在 Google App Engine 中使用 users.create_login_url的主要内容,如果未能解决你的问题,请参考以下文章

Vimeo 视频自动播放在 Safari 11 中不起作用:NotAllowedError

如何修复在flutter webview中无法访问视频流(NotAllowedError)以使用html5 + webRTC相机api?

在 Ionic4 中加载页面时播放声音

iOS 11 Public beta 5 getUserMedia 无法正常工作

您如何从 web-nfc API 获取权限?

Initialization error Oracle Client not properly installed OracleHomeKey: OracleHomeDir: