- # 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
- code ----->qq----token
- 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
来源: http://www.bubuko.com/infodetail-3336607.html