2012-08-25 70 views
1

剛開始學習django,我想加入allauth應用程序。 一直試圖弄清楚這一整天,並沒有找到其他問題的答案。 每當我嘗試添加社交登錄的一個,我甚至不能得到一個登錄界面和Django的抱怨:在django-allauth中,我如何添加OpenId社交應用程序?

get_login_url() keywords must be strings 
當它試圖使提供者列表

。 (我複製了基地,索引和配置文件的例子,隨着allauth)

我讀過,在我使用登錄之前,我需要添加社交應用程序在管理界面。所以在管理界面中,我想嘗試一個更簡單的,所以我選擇了OpenId。由於我沒有Facebook應用程序ID或任何其他的東西,我想到了OpenId,我不需要它。

我越來越掛在用於註冊社交應用程序的密鑰和祕密。我是新手,但我認爲這更多的是OAuth。但如果我不包含它,它會將這些字段標記爲紅色並要求它們。我在哪裏可以找到/生成密鑰/密鑰?

另外,要使用OpenId,我應該指定一個像Google或Yahoo這樣的網站,還是隻有一個「OpenId」網站?

我仍然使用manage.py runserver,如果這有什麼不同。但我認爲我仍然可以讓頁面「渲染」。

回答

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'): 
+0

蟒蛇--version 的Python 2.6.1 (雪豹 - 所以是的,這可能是它) 有趣......起初我以爲這是一個runserver vs皇家部署的事情,所以我把它在一個不太方便的Linux網站上,它開始工作。但現在我意識到我的本地python是2.6.1和遠程站點是2.6.6 我無法從鏈接中知道 - 是否有解決方法,就像是我需要編輯的文件? 謝謝! –

+0

發生在第9行的allauth/templates/socialaccount/snippets/provider_list.html href =「{%provider_login_url provider.id openid = brand.openid_url%}」 它看起來像追溯到/ Library/Python的第53行/2.6/site-packages/django_allauth-0.7.1-py2.6.egg/allauth/account/views.py返回render_to_response(template_name,RequestContext(request,ctx)) –

+0

該更改看起來像是有效的。我在本地再次啓動manage.py runserver(使用較老的python),並且通過上述修復,我現在可以獲得沒有類型錯誤的登錄頁面。所以...看起來不錯!謝謝! –

相關問題