2

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

get_login_url() keywords must be strings

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

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

我对如何使用密钥和秘密来注册社交应用程序感到困惑。我对这些东西很陌生,但我认为这更适用于 OAuth。但如果我不包括它,它会将这些字段标记为红色并要求它们。我在哪里可以找到/生成密钥/秘密?

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

我仍在使用 manage.py runserver,如果这有什么不同的话。但我认为我仍然可以让页面“渲染”。

4

1 回答 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'):
于 2012-08-26T22:05:17.133 回答