前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github第三方登录

Github第三方登录

作者头像
程序员不务正业
发布2019-10-10 11:18:58
8090
发布2019-10-10 11:18:58
举报
OAuth

OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

需求与流程

1、用户打开博客后,我想要通过GitHub获取该用户的基本信息 2、在转跳到GitHub的授权页面后,用户同意我获取他的基本信息 3、博客获得GitHub提供的Code,使用该Code与client_id、client_secret通过我们的服务器向GitHub申请一个access_token 4、GitHub对博客提供的授权码进行验证,验证无误后,发放一个access_token给博客端 5、博客后端使用access_token,向GitHub获取用户信息 6、GitHub 确认令牌无误,返回给我基本的用户信息 7、获取返回的信息在自己的后端数据库中进行登录绑定操作,完成github登录

如何使用GitHub提供的 OAuth 服务

打开github.com 右上角Settings Developer settings OAuth Apps New oauth app 填入基本的app信息 完成并获取到client_id,client_secret

具体流程

1、前端代码中添加按钮跳转到gethub授权页面 https://github.com/login/oauth/authorize?client_id=myclient_id&scope=user:email 地址,myclient_id替换成自己注册的id

2、授权成功后github会回调自己注册时填写的 Authorization callback URL 并且在后面拼接一个code

3、前端通过this.$route.query.code获取code发送给后端服务器

4、后端服务器取到code后结合

代码语言:javascript
复制
 var github_access_token_url = "https://github.com/login/oauth/access_token"
    superagent.post(github_access_token_url)
        .type("form")
        .set('Content-Type', 'application/json')
        .send({
            client_id: "09ac6402b20d569a2e7e",
            client_secret: "468e97d83fc5daa7eef05db82ee1493ea5743a23",
            code: req.body.code
        })
        .end(function (err, res) {
//请求结果,通过res.body获取返回的access_token
}

5、通过access_token获取用户信息,其中一个坑是该访问必须模拟浏览器,所以需要添加User-Agent到head中去

代码语言:javascript
复制
var infoUrl = "https://api.github.com/user?access_token=" + access_token
superagent.get(infoUrl)
.accept('application/json')
.set('User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')
.end(function (err, res) {
//获取github的用户信息
//根据自己的逻辑拿到用户信息后进行自动登录


}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.10.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OAuth
  • 需求与流程
  • 如何使用GitHub提供的 OAuth 服务
  • 具体流程
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档