码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2018-04-21 15:22:42      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:max   申请   ret   微博   model   pac   install   完成   跳转   

十四、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和微信的登录,一样的操作,只要去开放平台注册应用,其它跟微博登录一样设置就可以了。

 

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

标签:max   申请   ret   微博   model   pac   install   完成   跳转   

原文地址:https://www.cnblogs.com/derek1184405959/p/8886796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!