Django REST framework+Vue 打造生鲜超市(十三)

目录html

生鲜超市(一)    生鲜超市(二)    生鲜超市(三)   前端

生鲜超市(四)    生鲜超市(五)    生鲜超市(六)   vue

生鲜超市(七)    生鲜超市(八)    生鲜超市(九)   python

生鲜超市(十)    生鲜超市(十一)    生鲜超市(十二)    生鲜超市(十三)   git

代码下载github

github数据库

教程django

学习自慕课网-前端vue结合后端DjangoFramework的在线生鲜超市 后端

十4、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和微信的登陆,同样的操做,只要去开放平台注册应用,其它跟微博登陆同样设置就能够了。

相关文章
相关标签/搜索