社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

测试平台系列(39) 接入github第三方登录(下)

米洛丶 • 4 年前 • 432 次点击  
阅读 47

测试平台系列(39) 接入github第三方登录(下)

测试平台系列(38) 接入github第三方登录(下)

大家好,这里是米洛,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的博主!

欢迎大家关注我的公众号: 测试开发坑货


上篇我们想好了具体的思路,这篇就来实现之。

实现

其实后端要做的部分很简单,只需要完成后面2步即可,即生成token和获取用户信息。

  • 编写register_for_github方法

    当从github获取到用户信息以后,写入我们自己的用户表,如果有则更新用户信息,如果没有则新增一条记录。

先查询到email和username都匹配的用户,如果有,我们就更新用户的昵称和头像字段,并更新他的最后登录时间

如果没有该用户,我们就新生成一个用户。这里随机了几位数字加盐,保证用户的密码是随机的,如果通过github登录的用户,基本上不太容易试出他在测试平台用户表的密码

  • 编写github登录接口

请求参数为code,这里用到了requests的Session类,因为此处需要发送2次http请求。

  1. 获取access_token

url: github.com/login/oauth…

method: GET/POST都可以

参数: code,clientid和secret,也就是前文要求记录的2个字段

返回数据是这样的:

一串很普通的文本,我们需要从里面拿到access_token

  1. 获取用户信息

url: api.github.com/user

method: GET

headers: {"Authrozation": "token 刚才生成的token"}

这样就能拿到用户信息了:

可以看到里面有login(登录名),email(邮箱),name(昵称),其他有用的信息我们可以取avatar_url,方便我们能直接拿对方的头像来展示。

前端部分

前端部分我已经实现了,大概思路是提供github登录的按钮,当用户进入页面的时候判断url里面是否包含?code=, 如果有则说明是github登录成功后的回调事件,再将code解析后调用上面编写的login接口,其他逻辑与普通用户登录一致。

大家有兴趣可以研究下具体的实现,写的比较糙,可以通过提交记录来看到对应的改动~

github提速可以参考这个,亲测有效:

zhuanlan.zhihu.com/p/107334179

在线演示地址: http://47.112.32.195/

前端代码仓库: github.com/wuranxu/pit…

后端代码仓库: github.com/wuranxu/pit…

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/118083
 
432 次点击