Springboot网站第三方登录——QQ登录
这段时间为了做这几个第三方登录,走了很多弯路,跳了很多坑,为以后使用特地记录下来。
由于做了多个登录,所以代码做了一定程度的封装,大致如下:
//多个登录差不多都要共用这些方法,所以统一放到这个接口中
public interface AuthService {
public abstract String getAccessToken(String code);
public abstract String getOpenId(String accessToken);
public abstract String refreshToken(String code);
public abstract String getAuthorizationUrl() throws UnsupportedEncodingException;
public abstract JSONObject getUserInfo(String accessToken,String openId);
}
由于全部是自己封装的,所以http请求的代码也是所有的登录共用的,这里统一放放到了类DefaultAuthServiceImpl中,代码如下:
public abstract class DefaultAuthServiceImpl implements AuthService{
public static RestTemplate getRestTemplate() {
// 手动添加
SimpleClientHttpRequestFactory requestFactory=new SimpleClientHttpRequestFactory();
requestFactory.setReadTimeout(120000);
List<HttpMessageConverter<?>> messageConverters = new LinkedList<>();
messageConverters.add(new ByteArrayHttpMessageConverter());
messageConverters.add(new StringHttpMessageConverter(StandardCharsets.UTF_8));
messageConverters.add(new ResourceHttpMessageConverter());
messageConverters.add(new SourceHttpMessageConverter<Source>());
messageConverters.add(new AllEncompassingFormHttpMessageConverter());
messageConverters.add(new MappingJackson2HttpMessageConverter());
RestTemplate restTemplate=new RestTemplate(messageConverters);
restTemplate.setRequestFactory(requestFactory);
return restTemplate;
}
}
由此,所有的登录Service只需要继承AuthService即可。
QQ登录
1.首先去QQ互联注册一个账号,网站地址: