2013-05-28 47 views
4

因此,我已經搜索了很多這個主題,可能會過度複雜化,但會喜歡一些清晰的內容。所以這是問題。在iOS應用程序和Web應用程序中鏈接Facebook圖表

我有一個使用Facebook Graph(FB登錄,朋友邀請,通過FB共享等)的Web應用程序。我們剛剛爲該網站構建了一個iOS應用程序,現在也希望在iOS應用程序上實現上述所有FB操作。我查閱了Facebook文檔,並嘗試使用它來獲取Facebook登錄信息,以便爲已經在我們網站上註冊的用戶提供服務(並且他們的Facebook帳戶也已連接),但似乎無法正常工作。

用例 - 用戶在Web應用程序中註冊並將他們的FB賬戶與我們連接。然後,他們下載iOS應用程序,並希望使用FB登錄登錄iOS應用程序或在其時間線上共享對象。反之亦然。

問題 - 以上用例的ios應用程序,web服務器和Facebook之間的工作流應該是什麼?基本上,令牌和祕密是如何通過的,所以三個人都知道我們正在談論同一個用戶和同一個FB賬戶?

任何鏈接或建議將不勝感激!謝謝!

+0

關於將Facebook與ios應用程序集成還有其他問題嗎? –

回答

5

在Facebook認證的webapp用戶第一次啓動本機應用程序的情況下,您不會知道他們是誰。所以他們需要被提示「登錄facebook」按鈕。當他們點擊該按鈕時,facebook-ios-sdk會找出登錄用戶是誰,然後檢查該用戶是否已經授予您的應用程序訪問權限。如果Web應用程序和原生應用程序都指向同一個Facebook應用程序,那麼facebook-ios-sdk將僅存儲已驗證的訪問令牌,並且您將可以訪問您的Web應用程序在本機應用程序上執行的所有操作。

這裏的關鍵在於您的網絡應用程序和原生應用程序必須指向相同的Facebook應用程序(即developers.facebook.com中的相同應用程序ID)。如果沒有,則當用戶點擊「login with facebook」按鈕時,本機應用用戶將被重新提示授予權限。此外,用戶必須登錄到網絡應用程序(基於瀏覽器中的Cookie)和手機本身的同一個Facebook帳戶。 facebook-ios-sdk使用幾種不同的方式在手機上查找活躍的Facebook帳戶。它會嘗試使用iOS 5+系統的Facebook帳戶,跨應用程序調用Facebook自己的本機應用程序,瀏覽器cookie用於在您的應用程序中運行的Web視圖實例,或者將您退出Safari瀏覽器並在Safari瀏覽器中使用瀏覽器cookie。首先回來的人說,他們有一個活躍的Facebook賬戶需要找到與該網站應用相同的Facebook賬戶。在大多數情況下,他們會匹配,因爲大多數用戶只有一個Facebook帳戶,並且使用相同的帳戶登錄到任何地方,但他們當然可以不同。在Facebook應用facebook用戶與facebook-ios-sdk檢測到的原生應用active facebook用戶不一樣的情況下,那麼「login with facebook」按鈕將簡單地提示本地應用active facebook用戶登錄並授予權限。

一旦訪問令牌已被授予本機應用程序,您可以將其發送回服務器,找到相關的Facebook用戶ID,現在可以將Web應用程序用戶和本機應用程序用戶鏈接爲相同操作兩個應用程序的人此外,您可以使用剛剛從本機應用程序獲得的最新訪問令牌代表用戶創建任何想要在服務器上創建的圖形api調用。任何通過facebook-ios-sdk直接在本地應用程序中進行的共享/發佈/ api調用都將以該用戶的身份完成,並將由sdk進行處理(即,您不需要擔心它......應該只是無縫地工作,並將所有帖子集成到他們的時間線上,就像web應用程序的圖表一樣)。

如果您有一個Facebook認證的本地應用用戶轉到網絡應用,您也不會知道(在第一次請求時)該用戶是誰。您可以向他們展示facebook js sdk登錄,並且,同樣的facebook用戶登錄後,您可以將此當前的Web應用用戶與之前在本機應用中的用戶相關聯。

特別解決您的問題,當您第一次訪問應用程序時,您確實無法知道遷移用戶是在Web應用程序還是本機應用程序中。這就是「登錄facebook」的地方。假設用戶在瀏覽器和手機上登錄到同一個賬戶(由facebook-ios-sdk確定),那麼登錄到你的應用程序的過程是無縫。他們不會被提示第二次授予權限(除非您的權限設置在Web應用程序和本機應用程序之間不同),並且您將立即獲得用戶的訪問令牌。服務器的角色是通過使用授予的訪問令牌來協調這兩個用戶。通過訪問令牌,服務器可以簡單地調用圖形api並獲取用戶的Facebook用戶標識。使用該Facebook用戶ID,您可以匹配應用上用戶的「真實」身份(即,您現在知道網絡應用用戶和本機應用用戶是同一個用戶)。一旦知道用戶是誰,無論他是使用您的網絡應用程序還是使用本地應用程序,您都可以根據其身份爲該用戶提供個性化體驗。

希望這會有所幫助。很高興回答您可能遇到的更多問題。

+1

這是一篇非常長,周到,寫得很好的答案。不錯的工作! – ekinnear

+0

非常感謝T先生的驚人回答!抱歉,接受它的延遲。陷入了一大堆工作中。再次感謝! – Amit

相關問題