夏天的烦恼

导航

python 前后端不分离 QQ登录,微博登录

 

# QQ登录和用户中心

# QQ 登录

##### 点了QQ 按钮--京东后台--->login_qq_url--->用户,账号扫码---->京东商城--->code---->qq---token--->qqopenid

* 1. 开发账号----- 所有第三方的东西 一概公司的
2. 创建应用--appid---appkey
3. pip install QQLoginTool
3. 点击QQ 按钮--v-on/@click="qq_login"-->京东商城后台 
4. 京东商城后台---->认证QQ----->登录地址--qq_login_url 

## 1.实例化 # 2.获取 QQ登录网址 # 3.返回给前端 QQ_url
5. 用户,账号扫码---->回调---京东商城后台----code

6. code ----->qq----token
7. Token---->qq--- openid 
8. 是否绑定 openid 和我们自己的用户--绑定过----首页

# 1.去表 查询 openid 是否存在
# 加密 openid
# 2.不存在---绑定页面显示
# 存在-- 保持登录状态-首页
# 保持登录状态

9. 没有绑定过---绑定页面----绑定--->首页
1. 接收参数-- mobile pwd sms_code openid
2. 校验参数--手机号是否存在---密码--是否正确---图形验证码---短信验证码
3. openid+user绑定 # 解密 前端 传入openid 在拿openid查询user
1. user以前存在---绑定  
2. 新用user--默认创建一个用户--绑定    #3.判断user是否存在  不存在 新建一个  else if not user.check_password(pwd)  # 4. 不管存在不存在 都绑定openid
4. 保持登录状态 login
5. 重定到首页
6. 设置cookie

 

##### 2. 加解密

* 1. ```python
pip install itsdangerous
```

2. 导包
3. 实例化
4. 加密 dumps
5. 解密loads

 

微博其实实现方法差不多

  • 第三方发起微博授权登录请求,微博用户允许授权第三方应用后,微博会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数;
  • 通过code参数加上AppID和AppSecret等,通过API换取access_token;
  • 通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
  • 获取uid判断用户是否绑定

  • 微博sinaweibopy3模块使用说明

  • 1.生成对象

  • 导包
        client = sinaweibopy3.APIClient(
            # app_key: app_key值
            app_key=settings.APP_KEY, 
            # app_secret:app_secret 值
            app_secret=settings.APP_SECRET,
            # redirect_uri : 回调地址
            redirect_uri=settings.REDIRECT_URL
            )

      2.生成跳转的授权地址

    login_url =client.get_authorize_url()

     3.根据code值获取access_token和uid值

    python
    result = client.request_access_token(code)
    access_token= result.access_token
    uid=result.uid


微博模型类
from django.db import models
from utils.models import BaseModel

class OAuthSinaUser(BaseModel):
    """
    Sina登录用户数据
    """
    user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name='用户')
    uid = models.CharField(max_length=64, verbose_name='access_token', db_index=True)

    class Meta:
        db_table = 'tb_oauth_sina'
        verbose_name = 'sina登录用户数据'
        verbose_name_plural = verbose_name
 
 

posted on 2019-12-17 20:26  夏天的烦恼  阅读(273)  评论(0编辑  收藏  举报