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

man*_*anu 10 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') 
Run Code Online (Sandbox Code Playgroud)

已安装的中间件:

('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 :
Run Code Online (Sandbox Code Playgroud)

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

 Exception Type: ImproperlyConfigured at /accounts/login/ Exception
 Value: No Facebook app configured: please add a SocialApp using the
 Django admin
Run Code Online (Sandbox Code Playgroud)
  • 我添加了allauth应用程序 INSTALLED_APPLICATIONS
  • 添加了该TEMPLATE_CONTEXT_PROCESSORS设置
  • 编辑了设置, AUTHENTICATION_BACKENDS
  • 添加了allauth网址urls.py

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

Amy*_*yth 15

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

python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

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

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

UPDATE

您也可以尝试example.com从管理员中删除该网站,并添加一个新网站使用localhost:8000127.0.0.1:8000添加新网站下的Facebook社交应用程序.另外,不要忘记SITE_IDsettings.py文件中设置变量.

  • 要找到您已在http://127.0.0.1:8000/admin/sites/site/创建的站点的正确SITE_ID**,请单击该站点并[查看地址栏](http:// stackoverflow的.com /一个/六十七万三千九百九十一分之二千一百零八万四千九百二十七) (4认同)
  • 根据你的建议,我删除了example.com和另一个虚拟网站.起初它并没有改变任何东西.重新启动后,我遇到了一个新的错误http://stackoverflow.com/questions/11814059/site-matching-query-does-not-exist在我将SITE_ID设置为正确的数字后,即使facebook身份验证开始工作.感谢您抽出宝贵时间回复. (2认同)

nar*_*rko 10

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

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


Pau*_*ipp 5

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

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

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

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

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

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