2015-10-25 268 views
1

我有一個iOS應用程序,當您登錄或創建一個帳戶時,它會登錄/註冊一個我創建的存儲所有信息的後端。用facebook登錄後端帳戶iOS SDK

問題是,當我使用facebook SDK登錄時,我找不到任何可以存儲以驗證將來使用的唯一信息。

例如,如果我有用戶用他們的電子郵件地址登錄,他們用他們的電子郵件和密碼進行身份驗證,那麼在將來,當我進行API調用時,我將使用用戶唯一令牌驗證所有這些調用,生活在iOS應用程序和服務器上,當該令牌過期時,它會向iOS應用程序發送一個新消息,以便我可以繼續進行通信。

我可以從Facebook API中獲得什麼,我可以將其存儲在我的服務器上,我可以使用它來驗證用戶身份?

我知道這是一個令牌,但過期非常快。我正在使用Facebook iOS SDK 4.7.0

+1

要識別Facebook用戶,你應該只使用您從API獲得,當你要求與基本用戶的詳細信息,Facebook的用戶ID他們的令牌。請記住,雖然它目前只包含數字,但它並不意味着被解釋或存儲爲整數,而是作爲字符串值。 (因爲它可能會在將來的任何時候開始包含其他角色) – CBroe

+0

但是我無法使用該值對我的服務器上的用戶進行身份驗證,因爲任何人都可以獲取Facebook用戶的電子郵件和ID,然後實際上會知道一個用戶名和密碼來使用我的API,對吧? – Arel

回答

2

您想要將訪問令牌發送回服務器。在服務器上,結合您的訪問令牌和您的應用程序ID來獲得appsecret_proof。 appsecret_proof是一個sha256散列。都向Facebook發出的請求,看起來像這樣:

curl \ 
    -F 'access_token=<access_token>' \ 
    -F 'appsecret_proof=<app secret proof>' \ 
    -F 'batch=[{"method":"GET", "relative_url":"me"},{"method":"GET", "relative_url":"me/friends?limit=50"}]' \ 
    https://graph.facebook.com 

如果你得到一個成功的響應,你知道,這是一個合法的請求,可以登錄用戶涼爽的部分是,訪問令牌到期。如果等待時間過長,發出請求,你會得到一個失敗回:

{ 
    "error": { 
    "message": "Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.", 
    "type": "OAuthException", 
    "code": 190, 
    "error_subcode": 460, 
    "fbtrace_id": "GG1nF4eGYKI" 
    } 
} 
+0

真是個好回答! – Arel

相關問題