解码没有认证的签名请求

lan*_*ven 1 c# facebook facebook-graph-api facebook-c#-sdk

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

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

小智 8

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

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

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

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("\"", "");
}
Run Code Online (Sandbox Code Playgroud)

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

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