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

时间:2012-08-25 01:57:46

标签: django openid django-allauth

刚开始学习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 个答案:

答案 0 :(得分: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'):