社交登录又称作社会化登录(Social Login),是指网站的用户可以使用腾讯QQ、人人网、开心网、新浪微博、搜狐微博、腾讯微博、淘宝、豆瓣、MSN、Google等社会化媒体账号登录该网站。
OAuth2.0的认证流程示意图
- 请求第三方应用
- 第三方应用将用户请求导向服务提供商
- 用户同意授权
- 服务提供商返回code
- client根据code去服务提供商换取令牌
- 返回令牌
- 获取用户信息
在标准的OAuth2协议中,1-6
步都是固定,只有最后一步,不通的服务提供商返回的用户信息是不同的。Spring Social
已经为我们封装好了1-6
步。
使用Spring Social
准备工作
- 在qq互联申请个人开发者,获得appId和appKey或者使用 SpringForAll贡献出来的
- 配置本地host 添加
127.0.0.1 www.ictgu.cn
- 数据库执行以下sql
create table UserConnection (userId varchar(255) not null,
providerId varchar(255) not null,
providerUserId varchar(255),
rank int not null,
displayName varchar(255),
profileUrl varchar(512),
imageUrl varchar(512),
accessToken varchar(512) not null,
secret varchar(512),
refreshToken varchar(512),
expireTime bigint,
primary key (userId, providerId, providerUserId));
create unique index UserConnectionRank on UserConnection(userId, providerId, rank);
- 项目端口设置为
80
端口
引入Spring Social 模块
模块 | 描述 |
---|---|
spring-social-core | 提供社交连接框架和OAuth 客户端支持 |
spring-social-config | 提供Java 配置 |
spring-social-security | 社交安全的一些支持 |
spring-social-web | 管理web应用程序的连接 |
!--spring-social 相关-->
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-security