2011-07-09 229 views
4

我正在寫一個iPhone應用程序,它對我自己的服務器起作用。使用iOS的社交網絡登錄

基本上,這是一個用戶可以發佈的論壇。我不希望用戶在我的服務器上登錄帳戶,但我寧願他們使用他們擁有的任何現有帳戶登錄:Facebook,Linkedin,Foursquare等。 因此,從應用程序本身,我希望它們成爲能夠使用他們現有的賬戶登錄,然後他們可以在論壇上發帖。

我的問題是:當用戶發佈消息時,如何驗證他是否使用任何服務登錄?我需要在客戶端和服務器端驗證它。我計劃使用PHP編寫服務器端。

感謝

回答

11

了類似的討論(只限於網友實拍),請參閱this question。下面是關於應該發生什麼的高級概述(摘自我所鏈接的討論):

  1. 用戶在手機上打開應用程序。選擇一個服務進行身份驗證。
  2. 通過一個可用的服務(Facebook,Twitter,Foursquare等)進行身份驗證,並獲得一些特殊的access token
  3. 您的應用程序需要令牌並將其發送到您的服務器。
  4. 您的服務器收到令牌並進行驗證。它根據服務的API檢查它並(至少在Facebook和Twitter上)獲取相應的用戶ID。
  5. 假設一個有效的ID,你的服務器檢查用戶ID是否已經被某個用戶使用過。如果是這樣,它會記錄它們。如果尚未創建用戶標識,則服務器會創建與該用戶標識關聯的自己的用戶記錄,並將用戶登錄到該用戶記錄中。無論是哪種情況,用戶都會登錄並且服務器出現問題一個session key到您的應用程序。
  6. session key用於應用程序和服務器之間的所有進一步通信,直到用戶註銷。

在手機上,您將需要一些OAuth庫來允許用戶使用其他服務進行身份驗證。您可能希望使用Facebook iOS SDK來允許他們使用Facebook,並將其中一個建議的OAuth libraries here用於其他身份驗證服務。我只使用Facebook SDK,所以我不能說一般的OAuth庫。

一旦登錄,手機不應該存儲access token,只有session key

假設用戶可以使用多個服務來訪問他們的帳戶,您還需要某種方式將兩項服務連接到同一個用戶(可能通過電子郵件地址)。

由您來決定您的應用程序和您的服務器如何通信。我會去找一個JSON + REST API來與服務器進行通信。

+0

這是我想到的想法,但不知道我是否也需要在我的網站上創建一條記錄。謝謝! –

0

讓您的用戶使用多種服務登錄的另一種選擇是Socialize(www.getsocialize.com)。它是一個開源的SDK,用於管理用戶和身份驗證,因此您不必執行上述cbrauchli所述的所有步驟。