【问题标题】:Decode Signed Request Without Authentication无需身份验证即可解码签名请求
【发布时间】:2011-11-01 00:28:49
【问题描述】:

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

我正在寻找 .NET C# 等效于在此 PHP 示例中完成相同类型的解码:Seamless way to check if user likes page

【问题讨论】:

    标签: c# facebook facebook-graph-api facebook-c#-sdk


    【解决方案1】:

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

    Fans-only content in facebook with asp.net C# sdk

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

    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#?

    【讨论】:

    • 感谢此方法非常适合使用 JSON 解码和解析 Facebook signed_request!
    • 我刚试过,虽然喜欢的状态和页面 id 正在工作,但由于某种原因 lUserId 无法解析。任何想法为什么?
    • @mathew,当您在公司页面上时,您必须确保您已登录 facebook。
    • @Imran 是的,我确定我已登录。无论如何,我通过 javascript api 解析了 UserId。谢谢
    【解决方案2】:

    “没有身份验证”是什么意思?签名的请求使用您的应用秘密签名,因此无论当前用户是否授权您的应用,您都可以对其进行解码

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

    如果您找到另一个库或重新实现 HMAC SHA-256 和 base64url 解码器的算法,我相信您无需使用该特定库就可以做到,但使用它可能更容易

    【讨论】:

      猜你喜欢
      • 2013-06-02
      • 2020-10-31
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多