DjangoRestFramework整合social-auth-app-django实现第三方登录
-
第三方登录原理介绍见上篇,第三方登录流程
-
DjangoRestFramework整合social-auth-app-django实现第三方登录流程
- 用户点击第三方登录链接进入微博登录页面
- 用户输入用户名密码,获取授权码,授权服务器验证用户信息和客户端信息
- 浏览器重定向到回调url,获取access_token
- 根据access_token调接口获取用户信息
- 首次登录:创建用戶,创建用户信息关联表
- 第二次登录:已有用户认证
- 重定向到第三方应用并实现登录
-
安装第三方库social-auth-app-django
pip install social-auth-app-django
-
注册app
INSTALLED_APPS = ( ... 'social_django', ... )
-
执行数据库迁移操作,创建数据库表
python manage.py migrate
-
添加微信、QQ、微博backends到settings.py配置文件中
AUTHENTICATION_BACKENDS = ( 'social_core.backends.weibo.WeiboOAuth2', 'social_core.backends.weixin.WeixinOAuth2', 'social_core.backends.qq.QQOAuth2', 'django.contrib.auth.backends.ModelBackend', )
-
添加根路由到urls.py,这里主要有两个路由地址,login/...,主要是实现返回授权码的功能,complete/...,主要是实现后续获取access_token,创建用户,关联用户,认证和跳转登录功能
urlpatterns = patterns('', ... url('', include('social_django.urls', namespace='social')) ... )
-
添加context_processors到template
TEMPLATES = [ { ... 'OPTIONS': { ... 'context_processors': [ ... 'social_django.context_processors.backends', 'social_django.context_processors.login_redirect', ... ] } } ]
-
添加应用key和secret到配置文件settins.py中
SOCIAL_AUTH_TWITTER_KEY = 'foobar' SOCIAL_AUTH_TWITTER_SECRET = 'bazqux'
-
settins.py中配置用户完成登录之后的跳转url
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'
-
前后端分离的项目中将token放进响应cookie中实现登录跳转之后自动登录
-
实现微博第三方登录,浏览器输入地址http://127.0.0.1:8000/login/weibo
我在想我要不要写一句励志的话......