2012-05-04 21 views
1

我正在開發一個需要用戶登錄到Facebook的iPhone應用程序。然而,這只是檢索用戶的朋友列表,然後我希望通過我自己的XMPP服務器繼續通信,我想自動創建帳戶到這臺服務器。基於登錄Facebook帳戶自動生成密碼

爲此,我需要一個非常直接的用戶名:facebook用戶標識,但是我還需要根據某種私鑰顯示用戶已登錄到Facebook來創建密碼。對於任何時間登錄的任何設備,這個密鑰應該是一樣的,我一直在查看Facebook API,但只能找到訪問令牌,我認爲當用戶從不同的設備登錄時,訪問令牌會有所不同。

我的問題:Facebook API有這些需求嗎?對於替代解決方案的任何建議也會受到歡迎。

謝謝!

編輯:

例子:

  1. 用戶使用的第一次上他的iPhone應用程序,登錄與Facebook和應用我的XMPP服務器,用戶ID上自動創建一個acount等於臉書ID和密碼是顯示用戶已登錄到他的Facebook帳戶的東西。
  2. 現在,用戶在他的iPad上使用應用程序,再次登錄到他的Facebook帳戶,但是在我的XMPP服務器上已經有一個帳戶,必須從從Facebook接收的數據生成相同的密碼。

第2步是對我造成問題的部分,我需要的數據表明用戶已經登錄到他的帳戶,而且哪一個在他登錄時都是一樣的,只是爲了讓相同每次都可以生成密碼。我相信如果我爲此使用access_token,那麼如果用戶例如沒有登錄60天並開始再次使用應用程序,或者甚至當他登錄到其他設備時,這將會改變?

澄清:Facebook提供的XMPP服務器不符合我的需求,除了聊天消息之外,我需要能夠發送其他消息,還需要能夠存儲消息,以便登錄的新設備可以同步到適當的狀態。

回答

0

對於Facebook XMPP,我建議您使用稱爲X-FACEBOOK-PLATFORM的自定義SASL機制。基本上,用戶必須先登錄到您的應用程序並授予xmpp_login擴展權限。按照客戶端流程獲取具有xmpp_login擴展權限的用戶的有效access_token。

您發送base64編碼字符串通過TLS具有以下parmeters:

string method: Should be the same as the method specified by the server. 
string api_key: The application key associated with the calling application. 
string access_token: The access_token obtained in the above step. 
float call_id: The request's sequence number. 
string v: This must be set to 1.0 to use this version of the API. 
string format: Optional - Ignored. 
string cnonce: Optional - Client-selected nonce. Ignored. 
string nonce: Should be the same as the nonce specified by the server. 

你的appid(API_KEY)可以在多個環境中使用,你就可以得到用戶訪問令牌的每用戶的設備。

下面是聊天API文檔:https://developers.facebook.com/docs/chat/

+0

是不是一種機制,只是登錄Facebook的?我可能誤解了,但是這將如何爲我自己的XMPP服務器創建一個密碼? (請參閱我的編輯中的示例)。 – loconero

+0

我相信你可以爲用戶存儲access_token,並在用戶每次回到你的應用程序時重新授權用戶。如果超過60天,您將更新access_token。 oAuth對話框不提示用戶,如果他沒有在他的設置中取消授權你的應用程序。所以你會爲這個用戶獲得一個新的access_token。 如果您需要使用服務器與新數據同步設備,您可以生成自己的密碼,如果用戶在用戶被識別後在Facebook內成功進行身份驗證,則該密碼將有效。 希望這有助於。 – Alexcode

+0

是的,但是有什麼我可以用來作爲Facebook的輸入生成密碼?無論用戶何時登錄,用戶登錄時都是如此。當用戶決定從其他設備登錄時,應用程序必須知道用戶的密碼到我的服務器。我的問題是密碼的生成,Facebook發送給我的參數可以在Facebook的整個生命週期中使用嗎? – loconero

相關問題