Gitee实现第三方登录

第三方登录的原理

所谓第三方登录,实质就是 OAuth 授权。用户想要登录 A 网站,A 网站让用户提供第三方网站的数据,证明自己的身份。获取第三方网站的身份数据,就需要 OAuth 授权。

举例来说,A 网站允许 Gitee 登录,背后就是下面的流程。

  • A 网站让用户跳转到 Gitee。

  • Gitee 要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意?"

  • 用户同意,Gitee 就会重定向回 A 网站,同时发回一个授权码。

  • A 网站使用授权码,向 Gitee 请求令牌。

  • Gitee 返回令牌.

  • A 网站使用令牌,向 Gitee 请求用户数据。

准备工作–申请Gitee授权

step1:进入Gitee首页,点击进入”设置“,再点击进入”第三方应用“

step2:点击页面右上方的 “创建应用”,填写资料 step3: 创建应用成功后,可以看到Gitee授予的 Client ID,Client Secret等信息

Gitee登录流程及原理

  • 通过申请的应用ID–Client ID、回调地址等向 Gitee 服务器发起授权的请求

  • Gitee 认证服务器通过回调地址{redirect_uri}将 用户授权码 code 传递回来【传递到回调地址】

  • 通过用户授权码 code 及应用ID等信息,再去 Gitee 服务器中获取用户的访问令牌(Access Token)

  • 获取Access Token之后,根据这个token再去 Gitee 服务器中获取用户的 ID、name、email等信息【可以获取的信息字段如下】

浏览器跳转gitee

https://gitee.com/oauth/authorize?response_type=code&client_id=24da60060af591d***c1a520e4ba0194de8d66a1*****c93b0ba7a4663ab698&scope=user_info&state=qWa5naThUq0Sx94DXLeng6ae_4gWV****IlOKf_iSPA%3D&redirect_uri=http://****/login/oauth2/code/gitee

点击【同意授权】后,跳转到redirect_uri指定的地址,并且带有授权码:

http://localhost:5000/giteeredirect.html?code=7396b4fbfeb3ba669827a75421b528a90a2b6a5542f887ad8ea33187dd6bf819

根据授权码获取accesstoken

https://gitee.com/oauth/token?grant_type=authorization_code&code={code}&client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}

根据token获取用户信息

gitee文档地址:https://gitee.com/api/v5/swagger#/getV5ReposOwnerRepoStargazers?ex=no