⒈常用的pom依賴
1 <dependency> 2 <groupId>org.springframework.social</groupId> 3 <artifactId>spring-social-core</artifactId> 4 <version>1.1.6.RELEASE</version> 5 </dependency>
⒉一些常用接口及實現
1.ServiceProvider =》AbstractOAuth2ServiceProvider
服務提供商抽象接口,針對每一個服務提供商,例如QQ、微信、微博等,都需要提供一個ServiceProvider實現。
SpringSocial給我們提供了一個AbstractOAuth2ServiceProvider抽象類,它幫我們實現了一些共有的東西,我們實現服務提供商的時候只需要繼承這個抽象類就可以了。
2.OAuth2Operations =》 OAuth2Template
OAuth2Operations 接口封裝了OAuth2協議的從①步到第⑤步,實際上OAuth2協議的第①步到第⑤步是一個標准的流程,第⑥步是一個個性化的流程,因為第⑥步每一個服務提供商所提供的用戶信息數據結構是不一樣的。SpringSocial給我們提供了一個OAuth2Operations標准的實現類OAuth2Template。
3.Api(SpringSocial沒有提供,需要我們自己來寫) =》 AbstractOAuth2ApiBinding
因為每一個服務提供商對用戶基本信息的調用都是不同的,所以需要我們自己去寫一個Api接口來封裝獲取用戶信息(第⑥步)的方法。SpringSocial給我們提供了一個AbstractOAuth2ApiBinding抽象類來幫助我們更快的完成第⑥步的實現。
4.ConnectionFactory =》OAuth2ConnectionFactory
負責創建我們Connection實例,也就是包含前6步獲取到的用戶信息的對象。為了創建Connection實例,ConnectionFactory 需要系統前6步的流程,走前6步的流程就需要ServiceProvider,因此,ConnectionFactory包含着一個ServiceProvider實例,在開發中,我們需要調用ConnectionFactory的ServiceProvider實例來完成前6步的流程,將獲取到的用戶信息封裝成一個Connection。
5.Connection =》 OAuth2Connection
封裝我們前6步獲取到的用戶信息,由ConnectionFactory創建(一個連接工廠)。Connection 是一個固定的數據結構(字段名和字段都是固定的),每一個服務提供商的用戶數據定義都是不一樣的,我們需要通過ApiAdapter將每個服務商不一樣的數據結構轉化成Connection這樣一個標准的數據結構。
6.ApiAdapter
顧名思義,就是在我們的Api接口和Connection接口之間做一個適配,將每個服務商不一樣的數據結構轉化成Connection這樣一個標准的數據結構。
7.UsersConnectionRepository =》JdbcUsersConnectionRepository
將Connection 信息(即前6步獲取到的用戶信息)存儲到數據庫UserConnection表中。