解码没有认证的签名请求

我们是否能够使用Facebook C#SDK解码传递到Facebook标签页的signed_request参数, 而不使用身份validation ? 基本上,我正在寻找一种方法来解码和解析signed_request包含的页面JSON对象

我正在寻找.NET C #equivelent来完成这个PHP示例中的相同类型的解码: 无缝方式来检查用户是否喜欢页面

我只是粘贴了我在另一篇文章中回答的相同答案。

Facebook中使用asp.net C#sdk的粉丝专享内容

当您的网页加载到Facebookcanvas应用程序中时,您会收到签名请求; 您应该能够解析类似于以下内容的签名请求:

if (Request.Params["signed_request"] != null) { string payload = Request.Params["signed_request"].Split('.')[1]; var encoding = new UTF8Encoding(); var decodedJson = payload.Replace("=", string.Empty).Replace('-', '+').Replace('_', '/'); var base64JsonArray = Convert.FromBase64String(decodedJson.PadRight(decodedJson.Length + (4 - decodedJson.Length % 4) % 4, '=')); var json = encoding.GetString(base64JsonArray); var o = JObject.Parse(json); var lPid = Convert.ToString(o.SelectToken("page.id")).Replace("\"", ""); var lLiked = Convert.ToString(o.SelectToken("page.liked")).Replace("\"", ""); var lUserId= Convert.ToString(o.SelectToken("user_id")).Replace("\"", ""); } 

您需要添加对json库的引用,以便在C#中解析签名的请求,从http://json.codeplex.com/下载

另请参阅如何在C#中为Canvas signed_request解码OAuth 2.0? 如果你对签名请求感到厌烦

你的意思是’没有身份validation’? 已签名的请求已使用您的应用密码进行签名,因此无论当前用户是否已授权您的应用,您都可以对其进行解码

{edit}我现在意识到你指的是一个名为Authentication {/ edit}的库

如果您找到另一个库或重新实现HMAC SHA-256和base64url解码器的算法,我相信你可以在不使用该特定库的情况下完成它,但它可能更容易使用它