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

第四百零四节,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.3certifi-2017.7.27.1chardet-3.0.4defusedxml-0.5.0

idna-2.6oauthlib-2.0.4python3-openid-3.1.0

requests-2.18.4requests-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': '3306', #数据库端口

}

}

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 importadminfrom app1.views importalipaview

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 = '1359594035'SOCIAL_AUTH_WEIBO_SECRET= '7d33714722f4e5572c116ce2b2433a99'

#登录成功后跳转页面

SOCIAL_AUTH_LOGIN_REDIRECT_URL = '/index/'

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

urlpatterns =[#authentication / association

#是一个变量接收要使用登录模块的名称小写

#请求URL

url(r'^login/(?P[^/]+){0}$'.format(extra), views.auth,

name='begin'),#回调URL

url(r'^complete/(?P[^/]+){0}$'.format(extra), views.complete,

name='complete'),#disconnection

url(r'^disconnect/(?P[^/]+){0}$'.format(extra), views.disconnect,

name='disconnect'),

url(r'^disconnect/(?P[^/]+)/(?P\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 数据表里就是管理用户表的信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值