vue&django微博第三方登录

首先进去新浪微博开放平台注册应用
在这里插入图片描述
点击其他进入
在这里插入图片描述
点击创建
在这里插入图片描述
微博会给你 App Key和App Secret,这两个要保存下来
在这里插入图片描述
点击左侧高级信息,然后进去点击编辑
在这里插入图片描述
这时会让你自己设置回调路由和取消授权的路由,回调路由是当你用第三方登录时,微博会给你返回 一个code,这个code会返回到这个路由上,这个路由是vue路由,也就是一个vue前端页面
将回调路由保存下来(这里只用到了回调路由)
好啦,现在准备工作已经做好了,开始做咯
先给大家看一幅流程图第三方登录流程图
流程大概是这样

  1. 客户端访问微博登录页面,微博认证成功会将 code 返回给回调页面
  2. 回调页面拿着 code 访问后台
  3. 后台将 App Key,App Secret,回调路由,code封装好,发起获取uid的post请求时一起将这些参数带去
  4. 微博会将 uid和access_token返回给后台,后台用uid去三方社交表查询是否有这个uid,有就代表以前登录过,直接创建token,username,user_id返回给回调页,如果表里没有uid,说明第一次登录就先将uid和access_token返回给回调页
  5. 回调页以200状态判定返回的是token等参数,将token等数据保存,跳首页面,登录成功。
  6. 回调页判定返回的是uid,access_token,这时其实用户是被第三方认证过的,我们需要在自己本地数据库保存用户基本信息,所以讲uid等参数保存浏览器跳到用户绑定页面。
  7. 用户绑定页面携带uid,access_token再次访问后台,后台带着这些参数访问微博获取用户基本信息
  8. 得到相应,后台将用户基本信息入库用户表,用户社交表,然后生成token,username,user_id返回绑定页面,绑定页面将token等数据保存到浏览器跳首页,登录成功

token,username,user_id保存的位置
在这里插入图片描述
下面该实现代码了
用户表就不说啦,上面说到设计到三方登录,需要一个第三方社交表关联用户表

# 第三方社交表
class SocialUser(models.Model):
	# 这个字段是关联用户表的外键
    user = models.ForeignKey(Users,on_delete=models.CASCADE,verbose_name='用户',related_name='user_info')
    # 这个不是个字段,属于二元组,1就代表的PC,真正入库的是 int
    platfrom_type_choices = (
        (1,'PC'),
        (2,'Androia'),
        (3,'IOS'),
    )
    platfrom_id = models.IntegerField(max_length=1,choices=platfrom_type_choices,verbose_name='平台类型')

    platfrom_choices = (
        (1,'QQ'),
        (2,'微博'),
        (3,'微信'),
    )
    platfrom_type = models.IntegerField(max_length=1,choices=platfrom_choices,verbose_name='社交平台')
    uid = models.CharField(max_length=100,verbose_name='用户社交id')

    class Meta:
        db_table = 'socialuser'
        verbose_name_plural = '用户社交表'

数据库迁移:

python manage.py makemigrations
python manage.py migrate

把微博返回的几个参数配置到settings里

# 配置微博返回的参数
WEIBO_APP_KEY = '3312233733'
WEIBO_APP_SECRET = 'c88e0c5e4abe66e89f48897
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值