使用第三方GitLab登录
经过研究第三方GitLab,做了一个简单的demo,实现使用GitLab登录。
一、效果图
先展示一下效果截图,大概就如下图所示
1.1 点击登录按钮
1.2 正在跳转到GitLab中。。。。
1.3 到GitLab登录页面,输入邮箱和密码
1.4 登录成功后,便会跳转到授权登录。选择授权登录或者拒绝。若选择授权登录,便会跳到我们之前写好的页面。之后再用GitLab登录的话,就不会有这个授权页面了,而是直接到之前写好的页面。
1.5 登录成功跳到之前写好的重定向的页面。并且会返回一串code值,通过这个code值,我们便可以拿到token。也就是后面放的方法,有注释。
二、具体操作如下:
2.1 首先需要登录到GitLab,进行一个账号注册
进入用户中心设置,下拉选择【Settings】
2.2 选择【Application】新建,输入一个名字和返回路径,勾选【api】即可生成Application ID。
2.3 下方是生成好的Application ID以及相关信息, 后面会用上。
三、前端jsp和js 写一个简单的按钮跳转到GitLab登录页面,进行授权登录。
3.1 jsp内容
选择: <button onclick="tolo()">GitLab登录</button>
3.2 js内容使用【window.location.href】进行跳转,参数详情下方有说明。
跳转授权的接口:
https://gitlab.com/oauth/authorize
参数:
参数 | 内容 |
---|---|
client_id | 注册应用的 Application Id |
redirect_uri | 颁发令牌后的回调网址 |
response_type | 返回的类型,授权码模式即为code |
state | 用于确认请求和回调的状态,OAuth 建议以此来防止 CSRF 攻击 |
scope | api 权限设置,范围不得超出创建应用时的配置,以空格分隔 |
<script type="text/javascript">
function tolo(){
//注册 GitLab 应用成功后的 Application Id
var client_id="49d44eaf1792cd5ee3813d2fef98f2951b913f5fdb4698279d2b0a092dd6bd5d";
//注册应用时设置的重定向 URI
var redirect_uri= "http://localhost:8089/****/back/ToGitLabSuccess";
//返回的类型,授权码模式即为code
var response_type ="code";
//用于确认请求和回调的状态,OAuth 建议以此来防止 CSRF 攻击
var state = "linda";
//权限设置,范围不得超出创建应用时的配置,以空格分隔
var scope = "api";
//https://gitlab.example.com
window.location.href ="https://gitlab.com/oauth/authorize?client_id="+client_id+"&redirect_uri="+redirect_uri+"&response_type="+response_type+"&state="+state+"&&scope="+scope+""
}
</script>
四、后端代码:
Controller
import com.alibaba.fastjson.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework