python - OpenID 登录不太有效

标签 python html google-app-engine authentication openid

因此,我正在尝试为我的 GAE 应用创建自己的 openID 登录名,但我遇到了一个小问题。当我在我的本地主机上运行它时它运行良好,但当我尝试部署它时它不运行。我认为这是因为它实际上并没有尝试访问我本地主机上的 openID 服务器。

这是我的错误:

File "/base/data/home/apps/s~exployretrial/1.359795154076948420/blog.py", line 97, in get
    providerlist.append(users.create_login_url(federated_identity=uri))
  File "/base/python27_runtime/python27_lib/versions/1/google/appengine/api/users.py", line 246, in create_login_url
    req.set_federated_identity(federated_identity)
  File "cpp_message.pyx", line 124, in cpp_message.SetScalarAccessors.Setter (third_party/apphosting/python/protobuf/proto1/cpp_message.cc:2229)
TypeError: <type 'tuple'> has type <type 'tuple'>, but expected one of: str, unicode

这是我的python代码:

providers = {
    'Google'   : 'www.google.com/accounts/o8/id', # shorter alternative: "Gmail.com"
    'Yahoo'    : 'yahoo.com',
    'MySpace'  : 'myspace.com',
    'AOL'      : 'aol.com',
    'MyOpenID' : 'myopenid.com'
    # add more here
}

class Login(BlogHandler):
    def get(self):
        user = users.get_current_user()
        providerlist = []
        if user:  # signed in already
            self.redirect('/home')
        else:     # let user choose authenticator
            for uri in providers.items():
                providerlist.append(users.create_login_url(federated_identity=uri))
            self.render('login.html', user = user, providerlist = providerlist)

HTML代码:

<ul>
{% for provider in providerlist %}
  {% if loop.index == 1 %}
    <li><a href="{{ provider }}"><img src="http://openid.net/wordpress-content/uploads/2007/10/aol.png"></a></li>
{% elif loop.index == 2 %}
    <li><a href="{{ provider }}"><img src="http://openid.net/images/get-logos/google.png"></a></li>
{% elif loop.index == 3 %}
    <li><a href="{{ provider }}"><img src="http://openid.net/wordpress-content/uploads/2009/11/yahoo.png"></a></li>
{% elif loop.index == 4 %}
    <li><a href="{{ provider }}"><img src="http://openid.net/images/get-logos/myopenid.png"></a></li>
{% elif loop.index == 5 %}
    <li><a href="{{ provider }}"><img src="http://openid.net/wordpress-content/uploads/2007/10/logo_myspace_s.gif"></a></li>
{% endif %}
{% endfor %}
</ul>

因此,我们将不胜感激任何见解,如果您需要更多信息,请告诉我。

谢谢!

最佳答案

从 GAE 的应用程序设置中,将 Authentication Options 更改为 (实验性)Federated Login 而不是 Google Accounts API

关于python - OpenID 登录不太有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11150484/

相关文章:

python - 在 python-pbkdf2 中验证 PBKDF2 密码哈希

html - CSS 在我的 Python/HTML 元素中不起作用

python - 在 Selenium Python3 中切换到第二个 iframe

python - 在 App Engine 上提供可执行文件会更改文件权限

python - python opencv cam = cv2.VideoCapture(cn)

python - 如何在 Tkinter 中使用 grid() 制作一个简单的向导?

python - 将Python Kivy程序转换为C代码

html - 在 div 悬停时更改链接颜色

google-app-engine - 将 App Engine 与自定义域一起使用,而无需为 Google Apps 付费?

python 不会为元组释放内存,是吗?