第四百零四节,python网站第三方登录,social-auth-app-django模块,

social-auth-app-django模块是专门用于Django的第三方登录OAuth2协议模块

目前流行的第三方登录都采用了OAuth2协议

安装

pip install -i https://pypi.douban.com/simple social-auth-app-django

依赖关系

PyJWT-1.5.3
certifi-2017.7.27.1
chardet-3.0.4
defusedxml-0.5.0
idna-2.6
oauthlib-2.0.4
python3-openid-3.1.0
requests-2.18.4
requests-oauthlib-0.8.0
six-1.11.0
social-auth-app-django-1.2.0
social-auth-core-1.4.0
urllib3-1.22

 使用文档 http://coding.imooc.com/lesson/131.html#mid=7393

使用配置

1.将social_django添加到app配置,settings.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
'social_django',
]
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 配置数据库引擎名称
'NAME': 'jxiou', # 数据库名称
'USER': 'test_user', # 数据库用户名
'PASSWORD': 'test_user', # 数据库密码
'HOST': '127.0.0.1', # 数据库链接地址,为服务器ip
'PORT': '', # 数据库端口
}
}

2,输入命令migrate来生成第三方登录需要的表

3.配置需要的第三方登录模块,settings.py

第三方登录模块放在social_core插件下的backends目录,里面有很多第三方登录模块,比如,微信,微博,QQ等

# 设置要使用的第三方登录
AUTHENTICATION_BACKENDS = (
'social_core.backends.weixin.WeixinOAuth2', # 使用微信登录
'social_core.backends.qq.QQOAuth2', # 使用QQ登录
'django.contrib.auth.backends.ModelBackend', # 指定django的ModelBackend类
)

4.配置第三方登录路由url

from django.conf.urls import url, include                   # 导入django自在的include逻辑
from django.contrib import admin
from app1.views import alipaview urlpatterns = [
url(r'^admin/', admin.site.urls),
# 支付宝返回url
url(r'^alipa/', alipaview, name='alipa'), # 第三方登录
url('', include('social_django.urls', namespace='social'))
]

5.配置 TEMPLATES,settings.py

配置这里,当用户登录的时候,如果用户不存在,会自动在用户表创建用户,并且关联用户信息

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'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',
],
},
},
]

使用第三方配置

# 设置要使用的第三方登录
AUTHENTICATION_BACKENDS = (
'social_core.backends.weibo.WeiboOAuth2', # 使用微博登录
'social_core.backends.weixin.WeixinOAuth2', # 使用微信登录
'social_core.backends.qq.QQOAuth2', # 使用QQ登录
'django.contrib.auth.backends.ModelBackend', # 指定django的ModelBackend类
) # 配置微博开放平台授权
# SOCIAL_AUTH_要使用登录模块的名称大小_KEY,其他如QQ相同
SOCIAL_AUTH_WEIBO_KEY = ''
SOCIAL_AUTH_WEIBO_SECRET = '7d33714722f4e5572c116ce2b2433a99' # 登录成功后跳转页面
SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

配置后,启动程序,根据url来构造请求地址和,回调地址

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

<a href="{% url "social:begin" "weibo" %}">微博登录</a>

social_auth_usersocialauth 数据表里就是管理用户表的信息

第四百零四节,python网站第三方登录,social-auth-app-django模块,的更多相关文章

  1. 第四百零三节,python网站在线支付,支付宝接口集成与远程调试,

    第四百零三节,python网站在线支付,支付宝接口集成与远程调试, windows系统安装Python虚拟环境 首先保证你的系统已经安装好了Python 安装virtualenv C:\WINDOWS ...

  2. 第四百零六节,自定义用户表类来继承Django的用户表类,

    第四百零六节,自定义用户表类来继承Django的用户表类, models.py from django.db import models # Create your models here. from ...

  3. 第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误,

    第四百零五节,centos7下搭建sentry错误日志服务器,接收python以及Django错误, 注意:版本,不然会报错 Docker >=1.11Compose >1.6.0 通过d ...

  4. 第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块

    第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块 virtualenv简介 1.安装virtuale ...

  5. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  6. “全栈2019”Java第一百零四章:匿名内部类与外部成员互访详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  7. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化

    第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...

  8. 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

    Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...

  9. 第三百零一节,python操作redis缓存-管道、发布订阅

    python操作redis缓存-管道.发布订阅 一.管道 redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pi ...

随机推荐

  1. (Android系统目录结构)/mnt/sdcard 和 sdcard 的区别

    mnt/是Unix/Linux系统下外部设备的专用目录,Linux默认挂载外部设备都会挂载到这个目录;如将SD卡挂载后,会生成目录:/mnt/sdcard/. shell@aeon6735m_65c_ ...

  2. [Python]网络爬虫( 连载:大牛汪海 )

    汪海个人博客:http://blog.callmewhy.com/ Python爬虫专栏,汪海专栏 Python爬虫入门教程 简单的介绍如何使用Python的相关模块如urllib2来实现网络爬虫的基 ...

  3. Ubuntu16.04安装使用wineqq

    目前稳定的wineqq版本为qq2012,官方下载地址->这里 此版本有以下优点: 1.传送文件无问题. 2.支持密码键盘输入并记住密码. 3.可以发送QQ表情无问题. 4.QQ设置常用功能,比 ...

  4. 改变下blog思维

    自言自语 总是希望我写出来的东西都是精品或者尽我的努力使其接近精品,所以写一个就会消耗不少时间. 但是进来实在太忙,就没办法写:以至于断更了一大段时间.所以从现在开始记录一些很简小的东西直到我又开始有 ...

  5. 关于#!/bin/bash和#!/bin/sh

    关于#!/bin/bash和#!/bin/sh   #!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径. bash只 ...

  6. Sqoop: ERROR manager.SqlManager: Error reading from database: java.sql.SQLException:

    sqoop import --connect jdbc:mysql://122.206.79.212:3306/dating --username root --password 123456 --t ...

  7. 【独家】硅谷创业公司在中国常跌的五个坑|禾赛科技CEO李一帆柏林亚太周主题演讲

    [独家]硅谷创业公司在中国常跌的五个坑|禾赛科技CEO李一帆柏林亚太周主题演讲 李一帆 Xtecher特稿作者 关注  Xtecher推荐   演讲者:李一帆   翻译:晓娜   网址:www.xt ...

  8. 使用linux kernel代码编译perf工具

    环境:Qemu + ARMv8 perf是一款综合性分析工具,大到系统全局性性能,再小到进程线程级别,甚至到函数及汇编级别. 在内核源码目录下执行编译脚本: #!/bin/bash cross_com ...

  9. Unity2017灯光烘焙知识点

    去研究一下灯光探针,性能可以提升不少.

  10. poi 升级至4.x 的问题总结(POI Excel 单元格内容类型判断并取值)

    POI Excel 单元格内容类型判断并取值 以前用 cell.getCachedFormulaResultType() 得到 type 升级到4后获取不到了 换为:cell.getCellType( ...