10

我正在尝试在我的项目中设置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

这是所有需要做的事情还是还有更多?如果是的话,你能指点我相关的文档吗?

4

7 回答 7

19

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

python manage.py syncdb

如果这不起作用,如果您使用 localhost 或使用 127.0.0.1:8000 ,请确保Site您添加 facebook 应用程序的域具有域localhost:8000127.0.0.1:8000

有关更多信息,请参阅此allauth 教程

更新

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

于 2012-12-24T08:42:26.313 回答
13

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

这花了我大约 3 个小时,直到我意识到......:S

于 2014-07-30T14:11:03.757 回答
5

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

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

为了使事情正常进行,您需要确保设置中的 SITE_ID 与您在 facebook 应用程序中启用并在 django 后端的社交应用程序中选择的域相匹配。如果在这三个位置中的任何一个位置指定的站点有误,您将收到“配置不当...”错误。

如果像我一样,您从一开始就搞砸了,请执行以下操作以使 facebook 身份验证正常工作:

  1. 转到您的 Facebook 应用程序并记录“站点 URL” - 这是您的 facebook 应用程序将验证的唯一站点。为了测试我使用' http://localhost:8000'。将此称为 mysite
  2. 在 django admin 中转到您的 facebook 社交应用程序,并确保您已将mysite作为“选择的站点”中的唯一站点。如果它不在列表中,请使用 admin/sites 添加它。
  3. 转到管理员/站点并删除任何不应该存在的内容。
  4. 使用 phpmyadmin 或类似的工具查看您的 django_site 表并记录mysite的 site_id 。
  5. 更新您的设置,以便将 SITE_ID 设置为mysite id。

运行您的服务器和 facebook 身份验证应该可以工作。

于 2013-07-18T07:44:12.877 回答
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 (!)

于 2013-06-06T21:51:46.847 回答
2

虽然看起来很明显,但首先登录 facebook 开发者页面并创建一个新应用程序。

脸书开发者

接下来转到 djagno管理站点并单击社交应用程序的添加按钮。

django 管理站点

正如其他人提到的那样保存并设置 SITE_ID,所以这解决了我的“没有配置 Facebook 应用程序”的问题。

于 2019-09-23T21:40:21.143 回答
1

对我有用的是,在Available Sites下,选择(在本例中为example.com,即默认 SITE_ID 名称)并添加到正确的Chosen Sites,然后在创建社交应用程序时保存

将示例站点添加到右窗格

于 2015-07-11T22:46:45.737 回答
0

settings.py 中的site_id必须与您站点的 django 管理员条目匹配(在测试期间它可能是 localhost:8000)。它位于“站点”标题下的“站点”选项中(同样,在管理员中)。要获得您的site_id...点击“网站”。注意:仅仅因为您有 2 个条目并且第 2 个是您的,并不意味着site_id = 2. 单击您的条目,然后在地址栏中记下该数字。这在上面和其他地方都有介绍,但是对于编码新手,我需要更明确的说明。 看到图片中的3了吗?好吧,这是我在“网站”中的 2 个条目中的第 2 个

于 2016-03-09T03:42:46.143 回答