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