现在互联网飞速发展,人们每天在互联网上冲浪,获取各种信息。各大网站为了方便用户的登录,提供了各式各样的社交登录,比如:QQ、微信和微博登录等。这些主流的社交登录大多是基于oauth协议进行实现,spring social 对oauth协议进行了封装,方便了用户快速使用第三方系统登录。
就拿我们的QQ登录来说,我们点击页面上的QQ登录图标,网站将我们导航到QQ登录的服务器,我们在QQ登录的服务器上完成登录,然后重新回到我们自己的服务器上,此时就完成了用户的QQ登录,我们也随之可以获取到QQ的用户信息。
在上面这个QQ登录流程中,用户在QQ服务器上登录成功后,返回到我们自己的系统中,此时QQ服务器给我们返回了一个授权码(code),然后应用程序后台暗箱操作,发送请求到QQ服务器根据这个授权码(code)去换取我们的访问令牌(access_token),然后在根据访问令牌(access_token)获取到用户的信息。
那么有了上面这个流程,我们需要获取到用户信息,但是不同的服务器提供商返回的用户信息可能不一样,比如QQ返回一些用户信息(用户名,图像),微信返回了一些用户信息(昵称,性别),那么此时我们就需要适配这些用户属性,变成spring social可以识别的,那么就需要ApiAdapter来进行适配。
对于QQ和微信这个应用程序,我们要去和他们打交道,获取用户信息,对于我们而言,QQ和微信这些就是一个服务提供商(ServiceProvider),我们要从这些服务提供商上获取到信息,就要走完他们的协议(oauth),而oauth协议的授权部分大致一致,在spring social中这部分有(Oauth2Operations)来完成。
当我们的客户端应用程序和服务端建立连接后(走完oauth协议)就形成了一个连接(Connection),允许应用程序调用服务提供商的api来获取或更新用户的信息。
Connection的创建是由ConnectionFactory来创建的,不同的协议(oauth1/oauth2...)对应着不同的ConnectionFactory实现。
张三使用QQ登录系统后,那么我们怎么知道它是对应业务系统的张三呢,此时就应该有一张UserConnection表表示对应关系,UserConnection需要持久化到数据库中或保存到内存中,那么此时是由UserConnectionRepository的实现来完成。
由了以上的简单了解,我们简单的总结一下。我们与服务提供商(ServiceProvider<A>)进行授权需要走授权流程,此时由Oauth2Operations来完成,授权流程走完之后,就可以获取到访问令牌(access_token),然后调用api来获取用户信息。但是不同的服务提供商可能返回的用户信息各不相同,此时就需要将用户信息进行适配,使之符合spring social需要的格式,此时就需要ApiAdapter来进行适配。不同的协议(oauth1/oauth2...)构造连接(Connection)各不相同,就是就需要ConnectionFactory来进行不同的协议的封装构成连接(Connection)。
ConnectionFactory 由ServiceProvider和ApiAdapter构成 (ConnectionFactory产生Connection,但是Connection的产生需要走授权流程,但是Connection的结构是固定的,各个服务提供商返回的用户信息各部相同,所以就需要ApiAdapter进行适配.)
ServiceProvider 由Oauth2Operations和Api构成
Api 为用户自己编写的接口,用户与服务提供商打交道,获取第三方用户在服务提供商上的信息。
相关推荐
首先,让我们理解Spring Social Google的标题"spring-social-google-1.0.0.RELEASE.zip"。这个版本号"1.0.0.RELEASE"表明这是一个稳定且官方发布的版本,意味着它经过了充分的测试和调试,适合在生产环境中使用。而...
2. **文档(Documentation)**:可能包括API参考、用户指南和示例代码,帮助开发者理解和使用Spring Social。 3. **源码(Source Code)**:对于开发者来说,源码是了解Spring Social内部工作原理的重要资源。 4. ...
### 探索OAuth与Spring Social ...通过探索OAuth协议与Spring Social的功能,我们可以更好地理解如何在现代Web应用中实现安全、便捷的用户认证与授权机制。这些技术不仅增强了用户体验,还提高了系统的整体安全性。
《Spring社交框架与LinkedIn API整合详解》 在现代Web开发中,社交网络的集成...通过理解并掌握Spring Social LinkedIn的使用,开发者可以将专业社交网络的功能巧妙地融入自己的应用,扩大应用的影响力和用户基础。
Spring Social 支持这两种协议,使得开发者无需深入理解复杂的认证过程,就能安全地与服务提供商进行交互。 3. **Spring Social QQ** Spring Social QQ 允许开发者将QQ账号整合到自己的应用中,实现登录、获取用户...
通过理解Spring Social的工作原理和配置,你可以更好地利用这个库,提升你的开发效率,同时享受到Spring框架带来的便利性和一致性。在实际项目中,记得定期更新库版本,以获取最新的功能和安全修复,确保你的应用...
本文将深入探讨Spring Social Google的自动配置,帮助开发者更好地理解和运用这一功能。 一、Spring Boot与自动配置 Spring Boot以其“开箱即用”的特性简化了Spring应用的开发。它通过默认配置、起步依赖和自动...
本文将深入探讨Spring Social Yahoo扩展,帮助开发者更好地理解和运用这一强大的工具。 Spring Social的核心理念是提供一种简洁的方式,让应用程序能够连接到各种社交媒体服务,如Facebook、Twitter、LinkedIn等,...
首先,让我们深入理解Spring Social的核心概念。Spring Social提供了一个服务提供商模型,通过这个模型,开发者可以扩展Spring Social来支持新的社交网络。每个服务提供商都有一个连接器(Connector),用于处理与该...
《Spring Social Facebook与PAX URL Commons的深度剖析》 在当今的互联网世界中,社交网络已经成为人们生活的一部分,其中Facebook尤为突出。为了更好地利用Facebook的数据和服务,开发人员常常需要与其API进行交互...
"spring-social-nk"提供了适配器和提供者,这些组件实现了NK API的具体操作,使得Spring Social可以理解并操作NK API的数据模型。 在"wookie-0.9.2-incubating.zip"压缩包中,包含的"spring-social-nk-master...
- **简介**:Spring Social 是一组工具包,用于连接社交服务 API,如 Twitter、Facebook、LinkedIn 等。 #### 7. Spring AMQP - **简介**:Spring AMQP 是一个消息队列操作工具包,主要封装了 RabbitMQ 的操作。 ...
Spring Social提供了一个统一的API,让开发者可以与不同的服务提供者进行交互,无需深入理解每个服务的具体API细节。 在Spring Social Weibo中,主要涉及到以下几个关键组件: 1. **服务提供者标识符(ProviderId...
这本书是Spring开发的经典教材,提供了一个全面的视角来理解Spring框架。它涵盖了Spring的基本概念,如依赖注入(DI)、面向切面编程(AOP),以及如何使用Spring进行Web应用程序开发。同时,它还涉及了Spring MVC...
本章将介绍如何使用Spring Social库,实现社交登录功能,简化用户注册和登录过程。 5. 会话管理:讨论如何在Spring中管理用户会话,防止会话劫持和会话固定攻击,确保用户信息安全。 通过学习《Spring应用开发完全...
Spring Security提供了安全访问控制,Spring Integration支持不同系统间的集成,Spring Social则方便了与社交网络API的对接。Spring AMQP是针对RabbitMQ的消息队列操作工具,Spring HATEOAS帮助构建RESTful API,而...
Spring Social允许开发者轻松连接并利用各种社交网络API,如Twitter和Facebook。 Spring AMQP专注于消息队列的处理,主要与RabbitMQ集成。Spring HATEOAS帮助构建符合RESTful原则的Web服务,强调超文本驱动。Spring...