我正在尝试在我的项目中设置 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
INSTALLED_APPLICATIONS
TEMPLATE_CONTEXT_PROCESSORS
设置AUTHENTICATION_BACKENDS
allauth
urls.py
个网址
这是完成所需要的还是还有更多?如果是,请您指点相关文档?
答案 0 :(得分:15)
问题可能在于您的数据库。认为您需要同步数据库。
python manage.py syncdb
如果不起作用,请确保您添加Facebook应用的Site
域名为localhost:8000
,如果您使用的是本地主机,或127.0.0.1:8000
如果您使用的是127.0.0.1 :8000
有关详情,请参阅此allauth tutorial。
您还可以尝试从管理员中删除example.com
网站并添加使用localhost:8000
或127.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认证工作吧:
http://localhost:8000
'。称之为 mysite 。运行您的服务器并且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名称)并添加到右侧选择网站,然后在创建社交应用程序时保存
答案 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开发人员页面并创建一个新应用。
接下来转到djagno admin site,然后单击“社交应用程序”的添加按钮。
保存并设置SITE_ID,就像其他人提到的那样,因此这解决了“未配置Facebook应用”的问题。