Django项目django-allauth配置Google认证后登录选项不显示求助
我正在Django项目中使用django-allauth配置Google认证,但登录页面上未显示Google登录选项。
当前配置代码
INSTALLED_APPS = [ 'django.contrib.sites', 'allauth', 'allauth.account', 'allauth.socialaccount', 'allauth.socialaccount.providers.google', ] MIDDLEWARE = [ 'allauth.account.middleware.AccountMiddleware', ] SITE_ID = 1 LOGIN_REDIRECT_URL='/' SOCIALACCOUNT_PROVIDERS = { 'google': { 'SCOPE': [ 'profile', 'email', ], 'AUTH_PARAMS': { 'access_type': 'online', }, } }
排查与解决步骤
确认模板包含社交登录组件:登录页面模板(默认是
account/login.html)必须加载社交账号模板标签并渲染登录选项,添加以下代码:{% load socialaccount %} {% get_providers as socialaccount_providers %} {% for provider in socialaccount_providers %} <a href="{% provider_login_url provider.id process=process scope=scope auth_params=auth_params %}">使用{{ provider.name }}登录</a> {% endfor %}若使用默认模板,需确保模板继承结构正确,或直接引入allauth的社交登录模板片段。
绑定Social App与对应Site:在Django后台
Social Accounts > Social Apps页面,检查创建的Google应用是否已勾选SITE_ID=1的站点,未绑定的话不会显示登录选项。核对SITE_ID与站点域名:确保
settings.py的SITE_ID=1和后台Sites中对应站点的ID一致,同时该站点的域名需匹配当前项目访问域名(比如本地开发设置为localhost:8000)。补全必要中间件:仅添加
allauth.account.middleware.AccountMiddleware不够,需保留Django基础中间件,完整配置如下:MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'allauth.account.middleware.AccountMiddleware', ]执行迁移并重启服务:运行
python manage.py migrate确保allauth数据库表生成,之后重启Django开发服务器,让配置生效。检查Google OAuth客户端配置:在Google Cloud控制台中,确认OAuth 2.0客户端ID的授权重定向URI设置为
http://你的域名/accounts/google/login/callback/(本地开发为http://localhost:8000/accounts/google/login/callback/),路径必须与django-allauth的回调地址完全一致。
内容的提问来源于stack exchange,提问作者sayeed

