需要对接三方登陆的推荐一个很好用的插件justauth(https://www.justauth.cn/ 、 https://gitee.com/yadong.zhang/JustAuth)
获取配置信息
- 想要实现facebook三方登陆,我们需要APPID、APP秘钥、及你跳转成功的回调地址(就是你登录成功之后想让其跳转的地址);开发者地址:https://developers.facebook.com/apps/1350761151942887/fb-login/quickstart/
- 想要实现linkedin三方登陆,我们需要APPID、APP秘钥、及你跳转成功的回调地址(就是你登录成功之后想让其跳转的地址);开发者地址:https://www.linkedin.com/developers/apps/77321474/auth
创建app时记住APPID、APP秘钥并且设置好回调地址就行了,原来的项目找不到了就不展示了 - 想要实现twitter三方登陆,我们需要APPID、APP秘钥、及你跳转成功的回调地址(就是你登录成功之后想让其跳转的地址);开发者地址:https://developer.twitter.com/en/portal/projects/new
整合代码
@Autowired
private AuthStateRedisCache stateRedisCache;
// @Autowired
// private UserService userService;
@ApiOperation("1、登陆接口接口")
@ApiImplicitParam(name = "source", value = "三方登录类型(facebook 脸书,linkedin 领英,twitter 推特)", required = true, paramType = "query")
@PostMapping("/render/{source}")
public String renderAuth(@ParamsNotNull String source, HttpServletResponse response) throws IOException {
log.info("进入render:" + source);
AuthRequest authRequest = getAuthRequest(source);
String authorizeUrl = authRequest.authorize(AuthStateUtils.createState());
log.info(authorizeUrl);
// response.sendRedirect(authorizeUrl);
return authorizeUrl;
}
/**
* 根据具体的授权来源,获取授权请求工具类
*
* @param source
* @return
*/
private AuthRequest getAuthRequest(String source) {
AuthRequest authRequest = null;
switch (source.toLowerCase()) {
case "facebook":
authRequest = new AuthFacebookRequest(AuthConfig.builder()
.clientId("")
.clientSecret("")
.redirectUri("")
.scopes(AuthScopeUtils.getScopes(AuthFacebookScope.values()))
// 针对国外平台配置代理
.httpConfig(HttpConfig.builder()
.timeout(15000)
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)))
.build())
.build());
break;
case "linkedin":
authRequest = new AuthLinkedinRequest(AuthConfig.builder()
.clientId("")
.clientSecret("")
.redirectUri("")
.scopes(null)
.build());
break;
case "twitter":
authRequest = new AuthTwitterRequest(AuthConfig.builder()
.clientId("")
.clientSecret("")
.redirectUri("")
// 针对国外平台配置代理
.httpConfig(HttpConfig.builder()
.timeout(15000)
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 10080)))
.build())
.build());
break;
default:
break;
}
if (null == authRequest) {
throw new AuthException("未获取到有效的Auth配置");
}
return authRequest;
}
如果不成功可以试着换一下IP代理,最后相关的配置文件(链接:https://pan.baidu.com/s/1IuhOBQJx8FXLfw3R-GBs4w 提取码:h8fk)