2013-03-13 72 views
4

我目前有一個網站建立與Spring MVC和春季社會,所以用戶可以登錄Facebook和Twitter。整合應用程序與春季社交網站

現在我想授權我的Android客戶端使用Facebook(或Twitter)憑證訪問我的第三方網站。 As stated here,這應該是可能的。但他並沒有繼續說出如何。任何人都可以讓我走上這條路?請給我一些關於如何做到這一點的基本概述。我真的被困在這裏...

回答

13

我實際上是在一個需要做同樣事情的項目中工作。我爲網站實施了Spring Security & Spring Social,並且還需要允許iOS和Android應用通過社交網站進行連接。

下面是你需要做什麼:

  1. 設備特定的API落實到你的應用程序的項目的開發。因此,實施Facebook,Twitter或其他任何您通常會在設備上執行的操作。您將在那裏進行實際的身份驗證過程。

  2. 爲您的應用實施特殊的URL以通過社交服務登錄。例如,http://yousiteapi.com/services/auth/socialSignin。您需要將所有參數傳遞給此api,這些參數通常會寫入UserConnection表實現 - providerId,userProviderId,authenticationToken,secret等。如果提供程序不使用其中之一,只需傳入null或一個空的var。

  3. 在這個控制器中,您將需要引用Spring的Social SignInAdapter和ConnectionSignUp類的實現以及ConnectionRepository和UserConnectionRepository的實現,並基本重現整個註冊過程。首先,您需要通過提供者的consumerId來決定哪個提供者,並使用提供者的consumerKey和consumerSecret來實現您需要的特定的ConnectionFactory。然後,使用傳入的數據創建ConnectionData對象。使用ConnectionData對象,可以創建實際的Connection對象。

  4. 現在是你複製正常春社會登錄的邏輯:首先,用你的UserConnectionRepository參考,並調用findUserIdsWithConnection()方法來查看用戶是否之前的登錄。如果不是,則調用ConnectionSignUp .execute()方法來創建用戶。

  5. 最後,您只需調用您的SignInAdapter.signin()方法來簽署用戶。不要忘記將您的響應設置爲OK,以便您的應用程序知道這是成功的。

哇,聽起來很多。其實聽起來不僅僅如此。希望這至少能幫助你指出正確的方向。

+0

如果我編寫html5移動應用程序(jquery + phonegap等),我該怎麼辦? – 2013-05-13 07:13:49

+0

@ SBerg413我可以使用REST庫,並使通常的Facebook登錄,獲取訪問令牌,並使登錄請求的作用完全相同,如果用戶從他的客戶端代碼(瀏覽器,JavaScript)呼叫 – maximus 2017-05-29 18:10:19

+0

這是一個很好的方法,當然也有幫助讓我開始 - 儘管步驟2存在安全風險,因爲您的控制器只是從應用程序接受這些詳細信息 - 如果未在服務器側執行驗證,則可以添加隨機令牌。如果移動應用程序只是將令牌發送到Spring社交服務器並讓它調用API來構建連接,那麼更好的方法是。我會盡快寫一篇博客文章,併爲未來的人更新評論。到目前爲止, – steviemo 2017-08-16 16:40:48