2013-07-02 23 views
1

當用戶通過Facebook訪問畫布網址時,Facebook畫布應用獲取「signed_request」參數。服務堆棧和Facebook畫布應用驗證

我如何使用它在服務堆上驗證用戶,以便在服務堆中獲得用戶會話。

該用戶將已經註冊該應用程序,並將記錄在servicestack用戶存儲庫中。

我應該將畫布網址設置爲/ auth/facebook嗎?額外的?Continue =/target_url 這會驗證用戶並將他發送到target_url嗎? 或者我應該處理畫布請求,然後使用AuthService使用「signed_request」參數驗證用戶?如果是這樣的話,我該如何處理呢?

回答

1

下面是如何管理的情況下:

我處理的FB帆布請求,收到「signed_request」參數。然後通過解碼BASE64編碼的字符串(並用HMAC SHA256驗證),我得到了FB userId。

if (isMatch) 
{ 
    string message = UTF8Encoding.UTF8.GetString(msg); 
    var output = message.FromJson<Dictionary<string, string>>(); 
    string user = output["user_id"]; 
    OAuthTokens tokens = new OAuthTokens(); 
    tokens.Provider = "facebook"; 
    tokens.UserId = user; 
    UserSession.IsAuthenticated = true; 
    ((FacebookAuthProvider)AuthService.GetAuthProvider("facebook")).OnAuthenticated(this, UserSession, tokens, new Dictionary<string, string>()); 
    return UserSession.ToJson(); 
} 

我不確定這是否是手動獲取用戶身份驗證的最佳方式。但到目前爲止,這種技術已經奏效。