django-allauth 集成指南:从安装到社交登录配置
本文详细介绍 django-allauth 的安装与基础配置,涵盖 settings.py 和 urls.py 的关键设置。通过 GitHub 示例演示如何获取 Client ID 并配置社交应用,解决 404 错误及登录跳转问题,帮助开发者快速实现网站的用户注册、登录及第三方账户集成。
django-allauth 是一个集成的 Django 应用,旨在为网站提供完整的身份验证解决方案,包括用户注册、登录、账户管理以及第三方(社交)账户的身份验证功能。
鉴于您已决定使用 django-allauth,本文假设您已具备 Django 基础知识,例如能够使用 Django 搭建 Web 应用程序或小型博客网站。
安装与基本配置
安装与基本配置
安装
安装 django-allauth
pip install django-allauth
基础配置步骤
基本配置
首先,在项目根目录下的 settings.py 文件中添加以下相应配置代码。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.request',
],
},
},
]
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
INSTALLED_APPS = (
# 这两个django本身的app也是需要的,但不需要重复添加
'django.contrib.auth',
'django.contrib.sites',
'allauth',
'allauth.account',
'allauth.socialaccount',
# 下面是django-allauth目前支持的社交账号,加上你需要的就行了,不用全加上:
'allauth.socialaccount.providers.amazon', # 亚马逊
'allauth.socialaccount.providers.angellist',
'allauth.socialaccount.providers.asana',
'allauth.socialaccount.providers.auth0',
'allauth.socialaccount.providers.authentiq',
'allauth.socialaccount.providers.baidu', # 百度
'allauth.socialaccount.providers.basecamp',
'allauth.socialaccount.providers.bitbucket',
'allauth.socialaccount.providers.bitbucket_oauth2',
'allauth.socialaccount.providers.bitly',
'allauth.socialaccount.providers.coinbase',
'allauth.socialaccount.providers.dataporten',
'allauth.socialaccount.providers.daum',
'allauth.socialaccount.providers.digitalocean',
'allauth.socialaccount.providers.discord',
'allauth.socialaccount.providers.douban', # 豆瓣
'allauth.socialaccount.providers.draugiem',
'allauth.socialaccount.providers.dropbox',
'allauth.socialaccount.providers.dwolla',
'allauth.socialaccount.providers.edmodo',
'allauth.socialaccount.providers.eveonline',
'allauth.socialaccount.providers.evernote',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.feedly',
'allauth.socialaccount.providers.fivehundredpx',
'allauth.socialaccount.providers.flickr',
'allauth.socialaccount.providers.foursquare',
'allauth.socialaccount.providers.fxa',
'allauth.socialaccount.providers.github', # GitHub
'allauth.socialaccount.providers.gitlab',
'allauth.socialaccount.providers.google',
'allauth.socialaccount.providers.hubic',
'allauth.socialaccount.providers.instagram',
'allauth.socialaccount.providers.kakao',
'allauth.socialaccount.providers.line',
'allauth.socialaccount.providers.linkedin',
'allauth.socialaccount.providers.linkedin_oauth2',
'allauth.socialaccount.providers.mailru',
'allauth.socialaccount.providers.mailchimp',
'allauth.socialaccount.providers.meetup',
'allauth.socialaccount.providers.naver',
'allauth.socialaccount.providers.odnoklassniki',
'allauth.socialaccount.providers.openid',
'allauth.socialaccount.providers.orcid',
'allauth.socialaccount.providers.paypal',
'allauth.socialaccount.providers.persona',
'allauth.socialaccount.providers.pinterest',
'allauth.socialaccount.providers.reddit',
'allauth.socialaccount.providers.robinhood',
'allauth.socialaccount.providers.shopify',
'allauth.socialaccount.providers.slack',
'allauth.socialaccount.providers.soundcloud',
'allauth.socialaccount.providers.spotify',
'allauth.socialaccount.providers.stackexchange',
'allauth.socialaccount.providers.stripe',
'allauth.socialaccount.providers.trello',
'allauth.socialaccount.providers.tumblr',
'allauth.socialaccount.providers.twentythreeandme',
'allauth.socialaccount.providers.twitch',
'allauth.socialaccount.providers.twitter',
'allauth.socialaccount.providers.untappd',
'allauth.socialaccount.providers.vimeo',
'allauth.socialaccount.providers.vk',
'allauth.socialaccount.providers.weibo', # 新浪微博
'allauth.socialaccount.providers.weixin', # 微信
'allauth.socialaccount.providers.windowslive',
'allauth.socialaccount.providers.xing',
)
SITE_ID = 1 # 不要漏了这句哦
其次,在项目的 urls.py 文件(通常与 settings.py 位于同一目录)中添加如下 URL 配置:
urlpatterns = [
url(r'^accounts/', include('allauth.urls')),
]
提示:
如果您熟悉 django.contrib.auth.urls 模块,使用 django-allauth 后,您可以利用 allauth 提供的 account_login、account_logout、account_set_password 等 URL 来替代原有的 login、logout、password_change 等 URL。
接着,在项目根目录(即 manage.py 所在的文件夹)中执行以下命令以应用数据库迁移。
python manage.py migrate
最后,重启服务器以应用更改。
添加社交账号登录
添加社交账号登录
后台站点与应用配置
后台设置
注意:网站通常分为开发环境(本地主机,如 http://127.0.0.1:8000)和生产环境(服务器部署,如 http://www.honkerzhou.com)。为简化描述,下文将使用“你的域名”代表网站主页地址,请根据实际情况区分,以免混淆。
- 进入后台管理界面(地址格式为 你的域名/admin/),点击“站点”(Sites),新增一个站点记录,域名填写“你的域名”,名称可随意填写,保存即可。
- 在“社交账号”(SOCIAL ACCOUNTS)下的“社交应用”(Social application)中新增一个社交应用,需填写相关信息。以下以支持 GitHub 社交账号登录为例进行说明。
- Provider:选择 GitHub;
- 名称(Name):可随意填写,只要便于自己识别即可,建议填写为 GitHub;
- Client id 和 Secret key:需前往 GitHub 申请获取。若不清楚如何操作,请参考获取第三方应用的 Client id 和 Secret key 相关文档;
- Key:可不填;
- Sites:在可用站点列表中选择你的域名,将其移至右侧“选中的站点”中,然后保存。
获取第三方应用凭证
获取第三方应用的 Client id 和 Secret key
1.GitHub
登录 GitHub 后,依次进入 Settings -> Developer settings -> 在 OAuth Apps 下点击 New OAuth App,按步骤填写信息并进入下一步,即可看到 Client id 和 Secret key。
注意:
- Homepage URL 填写你的域名;
- Authorization callback URL 填写你的域名/accounts/github/login/callback/。
验证与初步使用
验证和初步使用
- 重要:请先注销你的管理员账号以便测试。
- 访问网址:你的域名/accounts/login/,你将看到一个排版较为简陋的页面,这是 django-allauth 自带的默认模板。若此时选择通过 GitHub 账号登录并出现授权提示,说明前述步骤正确,恭喜!
- 但你会发现授权登录后跳转至你的域名/accounts/profile/,并显示 404 错误。请勿惊慌,只需在 settings.py 文件中添加代码:LOGIN_REDIRECT_URL = '/',保存后刷新页面,即可跳转至网站主页面;
- 如需退出登录,访问网址:你的域名/accounts/logout/ 即可注销。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













