作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
学习必须往深处挖,挖的越深,基础越扎实!
QQ登录
上一章节完成了 ServiceProvider的功能,这一节完成应用内部的需要做的一些功能
注意看这个官网文档: Index of /spring-social/docs/1.1.x
由于在spring-boot-autoconfigure-2.0.4.RELEASE.jar没有对 social的自动配置了
所以我搞这节课的连通流程花费了5个小时,最后认证查看官网文档的说明才跑起来
实现 ConnectionFactory
package cn.mrcode.imooc.springsecurity.securitycore.qq.connet;
import cn.mrcode.imooc.springsecurity.securitycore.qq.api.QQ;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.support.OAuth2ConnectionFactory;
import org.springframework.social.oauth2.GenericOAuth2ConnectionFactory;
/**
* qq
* @author : zhuqiang
* @version : V1.0
* @date : 2023/8/6 9:02
* @see GenericOAuth2ConnectionFactory 模仿这个来写
*/
public class QQOAuth2ConnectionFactory extends OAuth2ConnectionFactory<QQ> {
/**
* 唯一的构造函数,需要
* Create a {@link OAuth2ConnectionFactory}.
* @param providerId 服务商id;自定义字符串;也是后面添加social的过滤,过滤器帮我们拦截的url其中的某一段地址
* on} interface.
*/
public QQOAuth2ConnectionFactory(String providerId, String appid, String secret) {
// 传递进来是因为使用该服务的地方才知道 这些参数是什么
/**
* serviceProvider 用于执行授权流和获取本机服务API实例的ServiceProvider模型
* apiAdapter 适配器,用于将不同服务提供商的个性化用户信息映射到 {@link Connection}
*/
super(providerId, new QQServiceProvider(appid, secret), new QQApiAdapter());
}
}
这里需要提供一个 ApiAdapter
QQApiAdapter
package cn.mrcode.imooc.springsecurity.securitycore.qq.connet;
import cn.mrcode.imooc.springsecurity.securitycore.qq.api.QQ;
import cn.mrcode.imooc.springsecurity.securitycore.qq.api.QQUserInfo;
import org.springframework.social.connect.ApiAdapter;
import org.springframework.social.connect.Connection;
import org.springframework.social.connect.ConnectionValues;
import org.springframework.social.connect.UserProfile;
/**
* 适配器,用于将不同服务提供商的个性化用户信息映射到 {@link Connection}
* @author : zhuqiang
* @version : V1.0
* @date : 2023/8/6 9:10
*/
public class QQApiAdapter implements ApiAdapter<QQ> {
@Override
public boolean test(QQ api) {
// 测试服务是否可用
return true;
}
@Override
public void