Django-allauth没有配置Facebook应用程序:请使用Django管理员添加SocialApp

时间:2012-12-24 08:34:42

标签: django facebook django-allauth

我正在尝试在我的项目中设置 Django-allauth 。我遇到此错误,无法修复它。

环境:

Request Method: GET Request URL: `http://localhost:8000/accounts/login/`

Django Version: 1.4.2 Python Version: 2.7.3 
Installed Applications:
('django.contrib.auth',  
'django.contrib.contenttypes', 
'django.contrib.sessions',  
'django.contrib.sites', 
'django.contrib.messages',  
'django.contrib.staticfiles',  
'core', 
'allauth',  
'allauth.account',  
'allauth.socialaccount', 
'allauth.socialaccount.providers.facebook', 
'allauth.socialaccount.providers.twitter',  
'django.contrib.admin', 
'django.contrib.admindocs') 

已安装的中间件:

('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware')


Template error: In template
/media/Dump/Sites/wtr/allauth/templates/socialaccount/snippets/login_extra.html,
error at line 3    No Facebook app configured: please add a SocialApp
using the Django admin    

       1 : {% load socialaccount %}
       2 : 
       3 :  {% providers_media_js %} 
       4 : 
       5 :

我实际上在Django Admin中配置了一个facebook应用程序,但无法理解为什么它会给出这个例外。

 Exception Type: ImproperlyConfigured at /accounts/login/ Exception
 Value: No Facebook app configured: please add a SocialApp using the
 Django admin
  • 我将allauth应用添加到INSTALLED_APPLICATIONS
  • 添加了TEMPLATE_CONTEXT_PROCESSORS设置
  • 编辑了设置AUTHENTICATION_BACKENDS
  • allauth
  • 中添加了urls.py个网址

这是完成所需要的还是还有更多?如果是,请您指点相关文档?

7 个答案:

答案 0 :(得分:15)

问题可能在于您的数据库。认为您需要同步数据库。

DO

python manage.py syncdb

如果不起作用,请确保您添加Facebook应用的Site域名为localhost:8000,如果您使用的是本地主机,或127.0.0.1:8000如果您使用的是127.0.0.1 :8000

有关详情,请参阅此allauth tutorial

更新

您还可以尝试从管理员中删除example.com网站并添加使用localhost:8000127.0.0.1:8000的新网站,并在新网站下添加facebook社交应用。另外,不要忘记在SITE_ID文件中设置settings.py变量。

答案 1 :(得分:10)

我在这里遇到了同样的问题,问题是SITE_ID,默认为1。但是,当您看到管理面板时,默认情况下会为示例站点分配1。在创建用于配置Facebook登录的站点之后,我在settings.py中替换了SITE_ID = 2并且它工作正常。另一种选择是删除示例站点,但如果在某些时候删除数据库并再次创建它,它将再次出现。

这让我花了3个小时直到我意识到......:S

答案 2 :(得分:3)

我有同样的问题,我认为一些解释会有助于其他人: django-allauth使用django-sites,这会让它变得非常混乱。

在配置社交应用时,很容易意外添加网站。

要使工作正常,您需要确保设置中的SITE_ID与您在Facebook应用中启用并在django后端社交应用中选择的域匹配。如果在这三个位置中的任何一个位置指定的站点出错,您将收到“错误配置...”错误。

如果像我一样,你从一开始就搞砸了这一切,那就去做facebook认证工作吧:

  1. 转到您的Facebook应用并记录“网站网址” - 这是唯一的 网站您的Facebook应用程序将进行身份验证用于测试我正在使用 'http://localhost:8000'。称之为 mysite
  2. 转到django admin中的facebook社交应用,并确保 mysite 是“所选网站”中唯一的网站。如果它不在列表中,请使用admin / sites添加它。
  3. 转到管理员/网站并删除任何不应该存在的内容。
  4. 使用phpmyadmin或其他一些来查看你的django_site表和 记录 mysite
  5. 的site_id。
  6. 更新您的设置,以便将SITE_ID设置为 mysite ID。
  7. 运行您的服务器并且facebook身份验证应该有效。

答案 3 :(得分:2)

我遇到了同样的问题,并感谢大家提出有用的建议。这是我的解决方案:(我做了chmod +x manage.py

1) ./manage.py syncdb
2*) ./manage.py schemamigration --initial socialaccount
(register new app on fb and add new Social app through admin)
3) ./manage.py shell
> from django.contrib.sites.models import Site
> site = Site.objects.create(domain='foo.com', name='foo.com')
> site.id
> ^C [y]
4) settings.py > add SITE_ID = 'your site.id'
5) test localhost:8000/accounts/login/

* schemamigration与已安装的South(!)

一起使用

答案 4 :(得分:1)

对我有用的是,在可用站点下,选择(在这种情况下 example.com ,这是默认的SITE_ID名称)并添加到右侧选择网站,然后在创建社交应用程序时保存

Add the example site to the right pane

答案 5 :(得分:0)

settings.py中的site_id必须与您网站的django管理员条目匹配(在测试期间,它可能是localhost:8000)。它位于“站点”标题下的“站点”选项中(同样在管理员中)。获取site_id ...点击“网站”。注意:仅仅因为你有2个条目而第二个是你的并不意味着site_id = 2。点击您的条目,然后在地址栏中注明该号码。这在上面和其他地方都有涉及,但对于编码我是新的需要更明确的指令。 see the 3 in the pic? Well it was my 2nd of 2 entries in "sites"

答案 6 :(得分:0)

虽然看起来很明显,但首先登录Facebook开发人员页面并创建一个新应用。

facebook developer

接下来转到djagno admin site,然后单击“社交应用程序”的添加按钮。

django admin site

保存并设置SITE_ID,就像其他人提到的那样,因此这解决了“未配置Facebook应用”的问题。