这里我们用的是微博开放平台,QQ和微信开发平台审核比较严格
微博设置开发平台链接 http://open.weibo.com/index.php
微博设置开发平台测试应用
https://blog.csdn.net/weixin_43335187/article/details/84580175
流程图
python网站第三方登录,social-auth-app-django模块,
social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块
目前流行的第三方登录都采用了OAuth2协议
安装:
pip install social-auth-app-django
setting 配置:
添加应用,
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'verify.apps.VerifyConfig',
'users.apps.UsersConfig',
'rest_framework',
'corsheaders',
'social_django',
]
2,输入命令migrate来生成第三方登录需要的表
注:如无法迁移 可更改 mysql引擎配置
python manage.py migrate
注意新生成的五个socual_auth开头的表
3.配置需要的第三方登录模块,settings.py
# 身份验证后端
AUTHENTICATION_BACKENDS = [
'users.utils.UsernameMobileAuthBackend',
'social_core.backends.weibo.WeiboOAuth2', #微博
'social_core.backends.qq.QQOAuth2', #qq
'social_core.backends.weixin.WeixinOAuth2',#微信
'django.contrib.auth.backends.ModelBackend' #指定django的modelbackend 类
]
配置主路由:
urlpatterns = [
path('admin/', admin.site.urls),
#用户认证
url(r'^',include('verify.urls')),
#用户信息注册登录
url(r'^',include('users.urls')),
#第三方登录
url('', include('social_django.urls'))
]
配置这里,当用户登录的时候,如果用户不存在,会自动在用户表创建用户,并且关联用户信息:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect' ,
],
},
},
]
配置微博开放平台授权(使用其它平台注意更改关键字)
SOCIAL_AUTH_WEIBO_KEY = ''
SOCIAL_AUTH_WEIBO_SECRET = ''
# 登录成功后跳转页面
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'
第三方平台中需要配置回调url
# social_django.urls 源码中
urlpatterns = [
# authentication / association
# <backend>是一个变量接收要使用登录模块的名称小写
# 请求URL
url(r'^login/(?P<backend>[^/]+){0}$'.format(extra), views.auth,
name='begin'),
# 回调URL
url(r'^complete/(?P<backend>[^/]+){0}$'.format(extra), views.complete,
name='complete'),
# disconnection
url(r'^disconnect/(?P<backend>[^/]+){0}$'.format(extra), views.disconnect,
name='disconnect'),
url(r'^disconnect/(?P<backend>[^/]+)/(?P<association_id>\d+){0}$'
.format(extra), views.disconnect, name='disconnect_individual'),
]
请求URL构造为:http://域名或者ip/login/使用模块名称小写/
如:http://127.0.0.1:8000/login/weibo/
回调URL构造为:http://域名或者ip/complete/使用模块名称小写/
如:http://127.0.0.1:8000/complete/weibo/
回调URL一般需要设置到开放平台的后台
前台页面可以调用,请求url
最后 登录测试 查看下表中是否增加 用户数据。
social_auth_usersocialauth 数据表