了解用户是否喜欢 Facebook 页面。使用 Facebook C# SDK

2024-04-04

我正在尝试为 Facebook 页面构建 Facebook“fangate”选项卡或“reveal”选项卡。

您知道它是如何进行的 - 当用户访问该页面时,如果他们尚未点击“赞”,则会显示一些内容,一旦点击“赞”,就会显示另一部分内容。

我不是 PHP 人员,所以我尝试使用 Facebook C# SDK 来做到这一点(http://facebooksdk.codeplex.com http://facebooksdk.codeplex.com)在 Visual Studio 2010 中。我对 .NET 也相当陌生,所以我对此做得不太好!

我必须承认,我一直在从各地剪切和粘贴代码才能使其正常工作,我想我已经快到了,但我没有收到此错误:

签名的请求无效。

第 82 行:var DecodedSignedRequest = FacebookSignedRequest.Parse(current, FacebookWebContext.Current.SignedRequest.Data.ToString());

这是我的代码:

        var settings = ConfigurationManager.GetSection("facebookSettings");
        var current = settings as IFacebookApplication;

        var DecodedSignedRequest = FacebookSignedRequest.Parse(current, FacebookWebContext.Current.SignedRequest.Data.ToString());
        dynamic SignedRequestData = DecodedSignedRequest.Data;

        var RawRequestData = (IDictionary<string, object>)SignedRequestData;
        string currentFacebookPageID = current.AppId;
        bool currentFacebookPageLiked = false;

        if (RawRequestData.ContainsKey("page") == true)
        {
            Facebook.JsonObject RawPageData = (Facebook.JsonObject)RawRequestData["page"];
            if (RawPageData.ContainsKey("id") == true)
                currentFacebookPageID = (string)RawPageData["id"];
            if (RawPageData.ContainsKey("liked") == true)
                currentFacebookPageLiked = (bool)RawPageData["liked"];
        }

        if (currentFacebookPageLiked)
        {
            //Do some stuff for fans

        }
        else
        {
            //Do some stuff for non-fans
        }

所有 Facebook 设置都在我的 web.config 文件中,并且我已检查 AppID 和 AppSecret 是否正确。

有人可以向我提供有关这个问题的任何见解吗?有没有我还没有找到的更好的方法?

非常感谢您的帮助。


好的,我已经解决了 - 但我不知道为什么。我有一种感觉,Facebook C# SDK 以某种方式破坏了签名的请求。如果我使用 Request.Forms["signed_request"] 获得签名的请求,那么一切似乎都有效。

我将分享我的工作代码,希望它能帮助其他人解决同样的问题。

        //Pull in the facebook app settings from the web.config file
        var settings = ConfigurationManager.GetSection("facebookSettings");
        var current = settings as IFacebookApplication;

        //Set up some stuff for later
        string currentFacebookPageID = current.AppId;
        bool currentFacebookPageLiked = false;

       //Get the signed request
       FacebookSignedRequest SignedRequest = FacebookSignedRequest.Parse(current, Request.Form["signed_request"]);
       dynamic SignedRequestData = SignedRequest.Data;

       //extract what we need from the request
       var RawRequestData = (IDictionary<string, object>)SignedRequestData;  

       //Check to see if we've got the data we need
       if (RawRequestData.ContainsKey("page") == true)
       {
           //We do, lets examine it and set the boolean as appropriate
           Facebook.JsonObject RawPageData = (Facebook.JsonObject)RawRequestData["page"];
           if (RawPageData.ContainsKey("id") == true)
               currentFacebookPageID = (string)RawPageData["id"];
           if (RawPageData.ContainsKey("liked") == true)
               currentFacebookPageLiked = (bool)RawPageData["liked"];
       }

       if (currentFacebookPageLiked)
       {
           //Do some stuff for fans
           lblName.Text = "Hi " + result.first_name + " - You are a fan";

       }
       else
       {
           //Do some stuff for non-fans
           lblName.Text = "Hi " + result.first_name + " - please click the like button";
       }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解用户是否喜欢 Facebook 页面。使用 Facebook C# SDK 的相关文章

  • 如何在MVVM中管理多个窗口

    我知道有几个与此类似的问题 但我还没有找到明确的答案 我正在尝试深入研究 MVVM 并尽可能保持纯粹 但不确定如何在坚持模式的同时启动 关闭窗口 我最初的想法是向 ViewModel 发送数据绑定命令 触发代码来启动一个新视图 然后通过 X
  • 无法使用已与其底层 RCW 分离的 COM 对象。在 oledb 中

    我收到此错误 但我不知道我做错了什么 下面的代码在backrgroundworker中 将异常详细信息复制到剪贴板 System Runtime InteropServices InvalidComObjectException 未处理 通
  • pthread_cond_timedwait() 和 pthread_cond_broadcast() 解释

    因此 我在堆栈溢出和其他资源上进行了大量搜索 但我无法理解有关上述函数的一些内容 具体来说 1 当pthread cond timedwait 因为定时器值用完而返回时 它如何自动重新获取互斥锁 互斥锁可能被锁定在其他地方 例如 在生产者
  • 如何忽略“有符号和无符号整数表达式之间的比较”?

    谁能告诉我必须使用哪个标志才能使 gcc 忽略 有符号和无符号整数表达式之间的比较 警告消息 gcc Wno sign compare 但你确实应该修复它警告你的比较
  • 使闭包捕获的变量变得易失性

    闭包捕获的变量如何与不同线程交互 在下面的示例代码中 我想将totalEvents 声明为易失性的 但C 不允许这样做 是的 我知道这是错误的代码 这只是一个例子 private void WaitFor10Events volatile
  • 实时服务器上的 woff 字体 MIME 类型错误

    我有一个 asp net MVC 4 网站 我在其中使用 woff 字体 在 VS IIS 上运行时一切正常 然而 当我将 pate 上传到 1and1 托管 实时服务器 时 我得到以下信息 网络错误 404 未找到 http www co
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • C#:如何防止主窗体过早显示

    在我的 main 方法中 我像往常一样启动主窗体 Application EnableVisualStyles Application SetCompatibleTextRenderingDefault false Application
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 如何将单个 char 转换为 int [重复]

    这个问题在这里已经有答案了 我有一串数字 例如 123456789 我需要提取它们中的每一个以在计算中使用它们 我当然可以通过索引访问每个字符 但是如何将其转换为 int 我研究过 atoi 但它需要一个字符串作为参数 因此 我必须将每个字
  • clang 实例化后静态成员初始化

    这样的代码可以用 GCC 编译 但 clang 3 5 失败 include
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 控制到达非 void 函数末尾 -wreturn-type

    这是查找四个数字中的最大值的代码 include
  • 如何让Gtk+窗口背景透明?

    我想让 Gtk 窗口的背景透明 以便只有窗口中的小部件可见 我找到了一些教程 http mikehearn wordpress com 2006 03 26 gtk windows with alpha channels https web
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • ASP.NET MVC 6 (ASP.NET 5) 中的 Application_PreSendRequestHeaders 和 Application_BeginRequest

    如何在 ASP NET 5 MVC6 中使用这些方法 在 MVC5 中 我在 Global asax 中使用了它 现在呢 也许是入门班 protected void Application PreSendRequestHeaders obj
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif

随机推荐