servicestack и удостоверяване на приложението facebook canvas

приложението facebook canvas получава параметър "signed_request", когато потребител посети URL адреса на canvas чрез facebook.

Как мога да използвам това за удостоверяване на потребителя в servicestack, така че да получа потребителската сесия в servicestack.

потребителят вече ще бъде регистриран за приложението и ще има записи в потребителските хранилища на servicestack.

Трябва ли да задам URL адреса на платното на /auth/facebook? с допълнителен ?Continue=/target_url Това ще удостовери ли потребителя и ще го изпрати ли до target_url? Или трябва да обработвам заявката за canvas и след това да използвам AuthService за удостоверяване на потребителя с помощта на параметъра "signed_request"? ако случаят е такъв, как да процедирам с него?


person nidheeshdas    schedule 02.07.2013    source източник


Отговори (1)


Ето как се справих със случая:

Обработих заявката за FB canvas, като получих параметъра "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();
}

Не съм сигурен дали това е най-добрият начин за ръчно удостоверяване на потребителя. Но досега тази техника работи.

person nidheeshdas    schedule 03.07.2013