我们是否可以使用Facebook C#SDK解码传递到Facebook标签页的 signed_request 参数,不使用身份验证?基本上,我正在寻找一种方法来解码和解析signed_request包含的页面JSON对象。
我正在寻找 .NET C# equivelent来完成此PHP示例中的相同类型的解码:Seamless way to check if user likes page
答案 0 :(得分:8)
我只是粘贴了我在另一篇文章中回答的相同答案。
Fans-only content in facebook with 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("\"", "");
}
您需要添加对json库的引用,以便在C#中解析已签名的请求,从http://json.codeplex.com/下载
如果您对签名请求感到厌烦,也请参考How to decode OAuth 2.0 for Canvas signed_request in C#?。
答案 1 :(得分:1)
你的意思是'没有身份验证'?已签名的请求已使用您的应用密码进行签名,因此无论当前用户是否已授权您的应用,您都可以对其进行解码
{edit}我现在意识到你指的是一个名为Authentication {/ edit}
的库如果您找到另一个库或重新实现HMAC SHA-256和base64url解码器的算法,我确信您可以在不使用该特定库的情况下执行此操作,但可能更容易使用它