servicestack和facebook canvas应用认证

时间:2013-07-02 11:04:50

标签: facebook authentication servicestack facebook-canvas

当用户通过Facebook访问画布网址时,Facebook画布应用会获得“signed_request”参数。

我如何使用它来验证servicestack上的用户,以便我在servicestack中获得用户会话。

用户已经注册了该应用,并且将在servicestack用户存储库中有记录。

我应该将画布网址设置为/ auth / facebook吗?添加?继续= / target_url 这会验证用户身份并将他发送到target_url吗? 或者我应该处理画布请求然后使用AuthService使用“signed_request”参数来验证用户?如果是这种情况那么,我该如何处理呢?

1 个答案:

答案 0 :(得分: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();
}

我不确定这是否是手动获取用户身份验证的最佳方式。但到目前为止,这项技术已经奏效。