图来自网络
授权登陆的官方api以及其他的api接口文档
说明:由于使用qq,微博的第三方登陆需要认证,而时间又比较长,这里就使用gitee免认证的方式来简单的实现一下第三方登陆.
开始:
首先找到设置中的第三方应用
然后创建应用:
要设置一些信息,比如回调地址:注意回调地址是外网可以访问的地址,使用一些阿里云的学生服务器就可以了,比较便宜。
信息设置完后,可以得到一个ClientId,ClientSecret,两个都是很重要的东西
然后开始简单的使用了:
首先我们在网页上的是点击某一个三方登陆,就会跳出来一个登良页面进行登陆,然后登陆成功就会跳到登陆成功的页面,这个成功的页面是我们自己来指定的。
@RequestMapping("login")
public String login(){
String url="https://gitee.com/oauth/authorize?client_id=%s" +
"&redirect_uri=%s&response_type=code";
url= String.format(url, clientId, callback);
return "redirect:"+url;
}
首先这个地址是gitee的第三方登陆认证地址,我们需要携带参数ClientId,还有回调地址。
然后重定向到这个页面上,
当然这里我是使用的在后端来跳转的,当然,你也可以在前端去进行跳转,看各位自己。
在地址栏输入:ip:端口/login
会跳转到gitee的登陆页面(如果gitee没有登陆的话),登陆了的话会显示授权,第一次授权,那么之后的,将直接登陆成功。
此时如果点击登陆的话会返回一个404的一个错误,那么因为上面需要用到的回调我们还没写
但是,注意,此时地址栏上的地址虽然是我们的回调地址,但后面携带了一个code一个参数,这是一个授权码,我们需要得到它。
在写回调之前,我们先引入坐标
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.6</version>
</dependency>
<!-- alibaba的fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.51</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!--我们用这个来处理请求返回的结果-->