首页 文章

在django-allauth中,如何添加OpenId社交应用?

提问于
浏览
1

刚开始学习django,我想加入allauth app . 一直试图弄清楚这一点,并没有在其他问题中找到答案 . 每当我尝试添加其中一个社交登录时,我甚至无法获得登录屏幕并且django抱怨:

get_login_url() keywords must be strings

当它尝试呈现提供者列表时 . (我复制了allauth附带的示例中的base,index和profile)

在我使用其中一个登录之前,我已经读过,我需要在管理界面中添加社交应用程序 . 所以在管理界面中,我想尝试一个更简单的,所以我选择了OpenId . 由于我没有Facebook应用程序ID或任何东西,我想用OpenId,我不需要它 .

我正忙着用Key和Secret来注册社交应用程序 . 我是新手,但我认为这更适合OAuth . 但是如果我不包含它,它会将字段标记为红色并要求它们 . 我在哪里可以找到/生成密钥/密钥?

另外,要使用OpenId,我应该指定像谷歌或雅虎这样的网站,还是只有一个“OpenId”网站?

我还在使用manage.py runserver,如果这有任何区别的话 . 但我以为我仍然可以让页面“渲染” .

1 回答

  • 1

    您运行的是哪个版本的Python?如果您使用的是旧的2.6版本,那么您可能会遇到此处描述的问题:

    http://cuu508.wordpress.com/2011/01/27/keywords-must-be-strings/

    如果确定您的问题,请告诉我 . 如果是这样,我会检查是否可以使 allauth 与您的版本相配...

    更新:还没有时间自己测试一下,你能试试这个改变吗?:

    --- a/allauth/socialaccount/templatetags/socialaccount.py
    +++ b/allauth/socialaccount/templatetags/socialaccount.py
    @@ -13,7 +13,7 @@ class ProviderLoginURLNode(template.Node):
         def render(self, context):
             provider_id = self.provider_id_var.resolve(context)
             provider = providers.registry.by_id(provider_id)
    -        query = dict([(name, var.resolve(context)) for name, var
    +        query = dict([(str(name), var.resolve(context)) for name, var
                           in self.params.iteritems()])
             request = context['request']
             if not query.has_key('next'):
    

相关问题