2013-07-02 1 views
1

사용자가 facebook을 통해 캔버스 URL을 방문하면 facebook 캔버스 앱이 "signed_request"매개 변수를 가져옵니다.servicestack 및 facebook 캔버스 앱 인증

서비스 이용시 사용자를 인증하기 위해이 서비스를 사용하여 서비스 세션에서 사용자 세션을 가져 오는 방법은 무엇입니까?

사용자는 이미 앱에 가입하고 서비스 이용자 저장소에 기록을 보유합니다.

캔버스 URL을/auth/facebook으로 설정해야합니까? 추가로 계속 하시겠습니까? Continue =/target_url 사용자를 인증하고 그를 target_url로 보냅니 까? 아니면 캔버스 요청을 처리하고 AuthService를 사용하여 "signed_request"매개 변수를 사용하여 사용자를 인증해야합니까? 이것이 사실이라면 어떻게 진행해야합니까? 나는 "signed_request"매개 변수를 수신하면, FB 캔버스 요청을 처리

: 여기

답변

1

내가 사건을 관리하는 방법입니다. 그런 다음 BASE64 인코딩 된 문자열을 해독하여 (HMAC SHA256으로 확인) FB 사용자 ID를 얻었습니다.

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(); 
} 

수동으로 사용자를 인증하는 가장 좋은 방법인지 확신 할 수 없습니다. 그러나 지금까지이 기법이 효과적이었습니다.