水平不高,欢迎指正。
概述
DRF-Social-OAuth2是一个功能强大,可以为基于Django REST Framework的应用程序实现OAuth2社交身份验证(OAuth2 social authentication)功能。通过高度集成python-social-auth和django-oauth-toolkit,DRF-Social-OAuth2为您的REST API提供社交身份验证,同时也可以作为您的OAuth2的提供者。
即使您不熟悉、不了解OAuth2,也没必要担心;DRF-Social-OAuth2为OAuth身份验证提供了一个简单高效的方法。即使如此,我们还是强烈建议您,通过参考我们提供的资料或者其他网上教程,来熟悉OAuth2中的概念和术语。
如果您急于测试DRF-Social-OAuth2,但又不想在本地环境中设置它,那么可以访问我们的facebook setup库。它包含了入门所需的所有配置。只需要在settings.py
文件中写好数据库的设置,你就可以开始了!简单说来,他能帮助你创建自己记得django + drf-social-oauth2项目。
我们希望DRF-Social-OAuth2简化你的社交身份验证过程,并且提高您的Django REST Framework应用程序的安全性和可靠性。如果您遇到任何问题或有任何建议,请随时将其提交到我们的GitHub存储库或通过我们的支持渠道联系我们。
使用
本指南将引导您完成DRF-Social-OAuth2的安装和应用于您的Django REST Framework应用程序的设置。同时,本指南假定您对Django有一定的了解,对OAuth2身份验证也有基本的概念。如果您是Django或OAuth2的新手,我们建议您查看资源部分,以获取更多的学习资料。
首先,您需要在本机上安装Python 3和pip。安装完成后,您就可以按照下面安装部分的指令来安装DRF-Social-OAuth2及其依赖。然后,您可添加必要的内容到您的settings.py
文件来配置Django环境,就可以使用DRF-Social-OAuth2了。最后,你需要迁移(migrate)你的数据库来实施这些改变。
当您读完本指南,您会成功地安装DRF-Social-OAuth2并为您的Django REST Framework应用程序完成使用DRF-Social-OAuth2的设置。依靠DRF-Social-OAuth2,您可以通过允许用户使用其社交媒体帐户进行身份验证,使您的REST-API更加安全和用户友好。
安装
本框架发布于PyPI,使用pip来安装:
ini
pip install drf_social_oauth2==2.1.3
为了保证您的Django REST Framework应用程序能使用OAuth2社交身份验证,您需要在您的应用程序中安装并配置drf-social-oauth2。首先,在INSTALLED_APPS
中添加一下Python包:
python
INSTALLED_APPS = (
...,
'oauth2_provider',
'social_django',
'drf_social_oauth2',
)
把社交身份验证链接添加到您的urls.py
中:
python
from django.conf.urls import url
urlpatterns = patterns(
...,
url(r'^auth/', include('drf_social_oauth2.urls', namespace='drf'))
)
对于Django4.0或者更高的版本,使用re_path
:
python
from django.urls import re_path
urlpatterns = patterns(
...,
re_path(r'^auth/', include('drf_social_oauth2.urls', namespace='drf'))
)
接下来,设置TEMPLATES相关的内容。本着前后端分离项目的初衷,我就不翻译这一段了。
您可以在每个视图类中单独设置认证类:
python
AUTHENTICATION_BACKENDS = (
...,
'drf_social_oauth2.backends.DjangoOAuth2',
'drf_social_oauth2.authentication.SocialAuthentication',
)
也可以在settings.py
的RES_TFRAMEWORK的AUTHENTICATION_BACKENDS中全局定义验证类。
python
REST_FRAMEWORK = {
...,
'DEFAULT_AUTHENTICATION_CLASSES':(
...,
# 'oauth2_provider.ext.rest_framework.OAuth2Authentication', # django-oauth-toolkit < 1.0.0
'oauth2_provider.contrib.rest_framework.OAuth2Authentication', # django-oauth-toolkit >= 1.0.0
'drf_social_oauth2.authentication.SocialAuthentication',
}
以下是drf-social-oauth2可用的设置:
DRFSO2_PROPRIETARY_BACKEND_NAME
:您的OAuth2社交后端(OAuth2 social backend),例如Facebook
,默认为Django
。DRFSO2_URL_NAMESPACE
:重定向URLs的namespace。ACTIVATE_JWT
:为True
时,access tokens和resfresh tokens都是JWT形式的。默认为False
。
设置新的应用程序
首先,进入Django 管理站点,按照下述配置创建一个新的应用:
- 保持
client_id
和client_secret
字段不变。 - 将
user
字段设置为您的超级用户(superuser)。 - 保持
redirect_uris
字段为空。 - 将
client-type
字段设置为保密的(confidential)。 - 将
authorization_grant_type
字段为'Resource owner password-based'。 - (可选)可以将
name
字段设置为您选择的名字。
有了这些设置,安装现在就完成了,您可以继续测试新配置的应用程序。
要获得更多信息并充分利用此软件包的功能,强烈建议您参考python-social-auth和django-oauth-toolkit的文档。如果您打算使用社交媒体后端(social backend),比如Facebook,您可能需要查阅python-social-auth文档中支持的后端supported backends和django-social-auth文档中的后端配置backend configuration