美文网首页
测试平台系列(39) 接入github第三方登录(下)

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

作者: 米洛丶 | 来源:发表于2021-08-22 09:49 被阅读0次

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

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

    欢迎大家关注我的工种耗: 测试开发坑货


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

    实现

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

    • 编写register_for_github方法

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

    image

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

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

    • 编写github登录接口
    image

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

    1. 获取access_token

    url: https://github.com/login/oauth/access_token

    method: GET/POST都可以

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

    返回数据是这样的:

    image

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

    1. 获取用户信息

    url: https://api.github.com/user

    method: GET

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

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

    image

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

    前端部分

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

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

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

    https://zhuanlan.zhihu.com/p/107334179

    官方文档

    相关文章

      网友评论

          本文标题:测试平台系列(39) 接入github第三方登录(下)

          本文链接:https://www.haomeiwen.com/subject/lbeciltx.html