OAuth2.0 social_django微博第三方登录
2019-01-08 11:37
113 查看
python网站第三方登录,social-auth-app-django模块,
social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块
目前流行的第三方登录都采用了OAuth2协议
安装:
pip install social-auth-app-django
settings.py配置:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #第三方登录 'social_django', ]
下一步我们就要执行迁移:
python manage.py migrate
social开头的就是我们生成的第三方表!
然后我们继续settings.py配置:
配置这里,当用户登录的时候,如果用户不存在,会自动在用户表创建用户,并且关联用户信息
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',
],
},
},
]
#在配置文件中告知Django使用我们自定义的认证后端 AUTHENTICATION_BACKENDS = [ 'users.utils.UsernameModelBackend',
'social_core.backends.weibo.WeiboOAuth2', #微博 'django.contrib.auth.backends.ModelBackend', #指定django的modelbackend 类
]
第三方参数配置:
# 用户key SOCIAL_AUTH_WEIBO_KEY = ''
# 用户secret SOCIAL_AUTH_WEIBO_SECRET = ''
# 登陆后用户跳转的地址 SOCIAL_AUTH_LOGIN_REDIRECT_URL = 'http://127.0.0.1:8080/index.html'
配置主路由:
urlpatterns = [ url('^xadmin/', xadmin.site.urls), # 第三方登录 url('', include('social_django.urls')), ]
下面我们还要配置回调URL:
在自己应用里的高级信息里,编辑授权回调页http://127.0.0.1:8000/complete/weibo/,黄色箭头指向的可以不填写
最后登录测试一下,看自己social_auth_usersocialauth表里是否有用户
登录成功跳到首页,发现还处于未登录状态,我们需要对源码做修改
我们要找到环境里的social_core目录下的actions.py
然后在100行左右 把下面这行代码
return backend.strategy.redirect(url)
修改为:
from rest_framework_jwt.serializers import jwt_encode_handler,jwt_payload_handler
response = backend.strategy.redirect(url) payload = jwt_payload_handler(user) response.set_cookie("name", user.username if user.username else user.username, max_age=24 * 3600) response.set_cookie("token", jwt_encode_handler(payload), max_age=24 * 3600) return response
修改好后登录之后就可以显示用户了!
原文出处:https://www.cnblogs.com/shao-shuai/p/10238091.html
相关文章推荐
- 微博第三方登录使用social_django实现显示登陆的用户名
- social-auth-app-django集成第三方登录
- oAuth2.0 第三方登录(Github+QQ+新浪微博)django开发
- django项目微博第三方登录
- python3Django项目——微博第三方登录
- 第四百零四节,python网站第三方登录,social-auth-app-django模块,
- 用django-social-auth 做中国社交网站三方登录(qq,微博,豆瓣,百度,人人,微信支持)
- OAuth2.0协议&第三方登录(微信,QQ,微博)
- django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录
- django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录
- 初探OAuth2.0第三方认证登录
- 三步制作自定义图标的微博第三方登录
- Laravel5.1 实现第三方登录认证(包括微博、QQ、微信、豆瓣)
- sina微博oAuth第三方登录代码示例
- php 新浪微博第三方登录验证/OAuth2.0
- Android微信、QQ、微博第三方登录
- 【用户授权设计】java第三方登录(微博,QQ)详细代码
- 第三方登录,一般都是遵循OAuth2.0协议。
- OAuth2.0协议 第三方登录 授权
- [置顶] Android使用友盟集成QQ、微信、微博等第三方登录