2013-03-14 69 views
17

我在django-allauth面臨一個問題。Django:SocialApp匹配查詢不存在

我有以下細節

socialapp配置localhost:9000/admin/

提供商: 名稱: 客戶端ID: 應用程序ID,或消費者鍵 重點: 祕密:等。

我設置SITE_ID = 2(因爲我改變了默認站點example.com爲localhost:9000)

In setting.py 


    INSTALLED_APPS = (
     'django.contrib.auth', 
     'django.contrib.contenttypes', 
     'django.contrib.sessions', 
     'django.contrib.sites', 
     'django.contrib.messages', 
     'django.contrib.staticfiles', 
     'django.contrib.admin', 
     'uni_form', 
     'allauth', 
     'allauth.account', 
     'allauth.socialaccount', 
     'bootstrapform', 
     # 'allauth.socialaccount.providers.twitter', 
     # 'allauth.socialaccount.providers.openid', 
     'allauth.socialaccount.providers.facebook', 
    ) 
    SOCIALACCOUNT_PROVIDERS = \ 
     { 'facebook': 
      { 'SCOPE': ['email', 'publish_stream'], 
       'AUTH_PARAMS': { 'auth_type': 'reauthenticate' }, 
       'METHOD': 'oauth2' , 
       'LOCALE_FUNC': 'path.to.callable'} } 

現在,當我準備在URL http://localhost:9000/accounts/facebook/login

我得到錯誤:SocialApp matching query does not exist.

請幫我看看我在這裏做錯了什麼。

回答

37

使用Django管理員,您需要創建一個列表您的Facebook應用憑證的SocialApp。確保這個應用程序連接到正確的網站(如,django.contrib.sites.models.Site)。

對於您的情況,需要有一個django.contrib.sites.models.Site id = 2的實例(檢查網站管理員),該實例被列爲SocialApp的網站。

如果兩個SocialApp丟失,或者如果創建,但它連接到相匹配的網站你settings.SITE_ID,然後allauth不知道選擇什麼樣的應用程序,導致你上面列出的錯誤消息。

+0

感謝作者我缺少django.contrib.sites.models.Site行 – masterofdestiny 2013-03-15 09:58:02

+6

我無法讓管理面板顯示我的SITE的ID,所以我將它加載到一個shell中:'from django.contrib.sites.models導入Site'並做了一個'Site.objects.all()'來查看列表。 'Site.objects.get(id = 2)'實際上被設置爲示例,所以我必須將我的設置更改爲3,這是我的本地主機設置爲。 – 2015-11-25 16:00:16

+0

我在測試中遇到這個錯誤。這給了我一個線索。在您的設置中,您必須添加來自allauth.utils從allauth.socialaccount.models導入get_current_site導入SocialApp sa = SocialApp.objects.create(name ='Facebook',provider ='facebook')sa.sites.add(get_current_site( )) – 2016-04-16 13:35:25