十四、social_django 集成第三方登录

14.1.申请应用

 进入微博开放平台,首先要经过认证,然后才可以创建应用

 地址:http://open.weibo.com/authentication

创建应用

写上应用的名字,创建好后,会有个“App Key”,这个非常重要

 OAuth2.0 授权设置

正常情况下,必须经过审核才可以让第三方登录,我们可以先用测试模式来完成。

(1)添加测试用户,可以测试登录

 (2)高级信息

 14.2.第三方登录

我们用social_django第三方库来实现第三方登录

github地址,上面有使用说明

https://github.com/python-social-auth/social-app-django

(1) 安装

pip install social-auth-app-django

 (2)INSTALL_APP中配置

'social_django',

(3)生成表

只需要做migrate,因为migration的文件已经生成好了

 python manage.py migrate

可以看到数据库中多了五张表

(4) 添加到AUTHENTICATION_BACKENDS中

settings

# 设置邮箱和用户名和手机号均可登录
AUTHENTICATION_BACKENDS = (
    'users.views.CustomBackend',
    'social_core.backends.weibo.WeiboOAuth2',
    'social_core.backends.qq.QQOAuth2',
    'social_core.backends.weixin.WeixinOAuth2',
    'django.contrib.auth.backends.ModelBackend',
)

(5)配置url

# 第三方登录
    path('', include('social_django.urls', namespace='social'))

 (6)settings里面context_processors

对于template中的用法,向context_processors中加入下面两个

  'social_django.context_processors.backends',
  'social_django.context_processors.login_redirect',

(7)接口

  在微博开放平台里面设置回调url,调试的时候设置成本地的就可以了,上线的时候改成服务器的ip地址

 (8)APP Secret和App key配置,settings里面

# 第三方登录,里面的值是你的开放平台对应的值
SOCIAL_AUTH_WEIBO_KEY = 'xxxxxxx'
SOCIAL_AUTH_WEIBO_SECRET = 'xxxxxx'

SOCIAL_AUTH_QQ_KEY = 'xxxxxxx'
SOCIAL_AUTH_QQ_SECRET = 'xxxxxxx'

SOCIAL_AUTH_WEIXIN_KEY = 'xxxxxxx'
SOCIAL_AUTH_WEIXIN_SECRET = 'xxxxxxx'

 现在浏览器访问:http://127.0.0.1:8000/login/weibo,就可以登录了,我们还需要设置用户微博登录成功后跳转到首页

#登录成功后跳转到首页
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

(9)修改源码

登录成功跳到首页,发现还处于未登录状态,我们需要对源码做修改

social_core/actions.py

原始代码

return backend.strategy.redirect(url)

修改为

# 修改源码适配drf
    response = backend.strategy.redirect(url)
    payload = jwt_payload_handler(user)
    response.set_cookie("name",user.name if user.name else user.username, max_age=24*3600)
    response.set_cookie("token", jwt_encode_handler(payload), max_age=24*3600)
    return response

现在就登录后就正常了。qq和微信的登录,一样的操作,只要去开放平台注册应用,其它跟微博登录一样设置就可以了。

原文链接:https://cloud.tencent.com/developer/article/1107397

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏散尽浮华

Mesos+Zookeeper+Marathon的Docker管理平台部署记录(2)--负载均衡marathon-lb

之前介绍了Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)的操作,多余的废话不说了,下面接着说下在该集群环境下的负载均衡ma...

46390
来自专栏KaliArch

Kubernetes+Prometheus+Grafana部署笔记

Kubernetes(通常写成“k8s”)Kubernetes是Google开源的容器集群管理系统。其设计目标是在主机集群之间提供一个能够自动化部署、可拓展、应...

47540
来自专栏雨过天晴

原 记在解决GitLab-CI下的Dock

19810
来自专栏写写代码吃吃瓜

Ubuntu环境下Tornado环境部署

18670
来自专栏FreeBuf

OpenStack:建立虚拟的渗透测试实验环境 – 安装篇

0x00 概述 对从业渗透测试的人员来说,保持技能更新是非常重要的,而更新技能的过程中,需要大量的去学习、实践和总结,比较传统的学习方式是通过虚拟机安装靶机来练...

36490
来自专栏日常工作总结

Kubernetes中Consul重启自动加入集群实践

近期频繁的容器母机调整导致我们的业务需要多次重启,不得不寻找一种自动重建Consul集群的方式。在网上搜索和学习一番后发现,基本没有针对Kubernetes容器...

32630
来自专栏Rainbond开源「容器云平台」

Docker 网络构造:Docker如何使用Linux iptables和Interfaces

24220
来自专栏Rainbond开源「容器云平台」

「Rainbond最佳实践」Tomcat配置Redis实现Session共享

22120
来自专栏编程坑太多

『中级篇』docker之运行nginx跳转到本地的jar并配置https(番外篇)(80)

PS:基本的nginx容器配置秘钥和key,跳转返回的时候,访问java容器的IP。

24040
来自专栏张善友的专栏

Windows Server2008中的IIS7的五大特性

1、完全模块化的IIS 如果你非常熟悉流行的Apache Web server软件,那么你会知道它最大的优势就在于它的定制化,你可以把它配置为只能显示静态的...

23160

扫码关注云+社区

领取腾讯云代金券