领先技术

Facebook 基本编程:小组件和时间线

Dino Esposito

 

Dino Esposito涉及一些基本编程方面的 Facebook 上一列中后, 将现在讨论的工具和技术来查看和检索内容从 Facebook 墙上以便分享它通过其他手段来的东西,如业务智能 (BI) 分析对其进行编目。

不是所有公司都具有相同级别的社会社区世界感兴趣的 Facebook 一样。一节课我学会了,不过,是,在所有公司中,定期的内部部门 — — 通常营销 — — 最终接近客户和可能更浓厚的兴趣很重要,在有接近公司的客户。Facebook 粉丝页面是的数目和工具来吸引联系人之一的喜好和活动页面上的水平可以衡量成功的倡议。

编程放置何处?为了保持一个 Facebook 页面,健在,刺激"谈论这个人"的数量增加的用户活动,您需要发布令人感兴趣的内容 — — 和频繁。有时公司可以负担得起人只是研究和创造的 Facebook 页面内容的工作的人员。有时,相反,好的 Facebook 页面内容来自直定期业务流的公司。在这种情况下,它会有点问题,做他们的正常工作的员工要预留额外的时间,在 Facebook 页面上报告他们在做什么。例如,想象一下消息被发送到 Web 站点。内部工作流可能需要编写的文本,其获得批准,将它发布在内部系统中,等待内容管理制度,使其活在网站上。如果在同一个新闻应该发布到 Facebook,太,大部分时间是同一人打开管理员身份的 Facebook 页面和只是职位内容手动。它常常作品今天,这种方式,但它不是一个办法,缩放。这是在 Facebook 编程正好放在。

超越过帐

在本专栏的最近分期付款,我处理过帐到 Facebook 墙上的主要议题和构建 Web 站点和桌面应用程序的基础知识可以与 Facebook 帐户的用户进行交互 (你可以看到所有我列在 bit.ly/hBNZA0)。对于企业方案目标墙在哪里公司的粉丝页面,方法并不是真的不同了。所有的更改是接收员额的帐户。

所以 Facebook 编程的第一步一定找个以自动化的方式,您的软件的控制下张贴内容到特定的墙壁上。

随着时间的推移到公司的粉丝页面,通常包括营销传播、 共享的内容为该公司将成为一个有用的资源。它将成为有价值的信息,该公司可能想要检索和进一步分享或分析。这是另一种非常适合于 Facebook 编程。

像框构件

快速和简单的方法,将一些 Facebook 内容添加到您的站点是通过像框构件。该构件列出最近帖子上 Facebook 页面,以及一个可选的喜欢页上的用户列表。对于 Web 站点中使用内容发布到 Facebook 感兴趣,这是完成的第一步。它是重要的是要注意插件的 Facebook 像框社会只打算与 Facebook 粉丝页一起使用,将不起作用如果您将它连接到一个个人的 Facebook 帐户。

此外请注意 Facebook 将区分风扇页和配置文件页。底线是风扇页是对于企业来说,而配置文件页都是为个人。允许的操作而言,有两个之间的一些差异。首先,一组人可以扇页上有管理员权限。此外,员额从一个粉丝页面可以具体针对语言和位置所以他们到达 (嗯,风扇,其实) 最好可以接收他们的追随者。风扇页支持其他功能,可以通过广告宣传和赞助的文章。

相反,配置文件页的目的是,让业主的朋友和家人保持联系。被一位朋友将成为强制性的条件,以获取更新,即使您可以通过订阅机制允许非朋友来获取您的信息更新。

配置用于 Web 页的像框不容易。您可以预览正在显示的内容和抓取相关的 HTML 直接从 Facebook 开发者网站。转到 bit.ly/hFvo7y 的现场演示。最后,它是所有有关安排长 URL 以 iframe 元素上设置。图 1 列出了您可以使用 URL 中的参数。

图 1 参数配置 Facebook 像框

参数 说明
href 指示到像框中的新功能的 Facebook 粉丝页面的 URL。
身长 指示所需的宽度,以像素为单位的插件。默认宽度为 300 像素。
身高 指示所需的高度,以像素为单位的插件。默认的高度不固定的并取决于脸和流是否要显示。一般情况下,应为它允许 500 像素为单位),如果您打算将消息流。
计画 指示该插件的配色方案。你只有两个选项:亮或暗。
show_faces 指示是否该插件应显示个人资料照片。默认值为 true。
stream 指示是否该插件应显示最新职位从页面的墙。
标头 布尔型参数,隐藏或显示默认 Facebook 头顶部的插件。
border_color 指示该插件的边框颜色。
force_wall 如果页面是指一个地方,然后此参数指示是否流应包含员额从的地方墙上或从朋友只签。默认为 false。

您所做的一切就是安排一个 URL 并将其绑定到 iframe,如中所示图 2

图 2 URL 绑定到 Iframe

 

<iframe src="//www.facebook.com/plug-ins/likebox.php   ?href=http://www.facebook.com/etennisnetpage     &width=292&height=490     &colorscheme=light     &show_faces=false     &stream=true     &header=true     &appId=xxxxxxxxxxxxxxx"   scrolling="no"   frameborder="0"   style="border:none; overflow:hidden; width:292px; height:590px;"   allowTransparency="true"> </iframe>

不用说你也可以在桌面应用程序中嵌入像框中 (例如,窗口的演示文稿基础 — — 或 WPF — — 应用程序) 通过 web 浏览器控件。

正如您所看到的该插件允许一些作品大部分时间的快速样式。 但是,如果您想要应用自己的 CSS (的范围内它是可能的和有案可稽) 应嵌入通过 JavaScript 和 HTML5 的像框。 图 3 显示了一个示例站点的自定义和定期 (光) 风格像框的输出。

Sample Like Box
图 3 示例像框

该插件的活动

另一种快速方法纳入现有的 Facebook 网页或桌面应用程序 (通过 Web 浏览器组件) 具体含量是插件的活动。

相互作用得到的与您的网站通过 Facebook 的用户具有此插件聚合故事。 请注意这里的目标不是但而是外部网站 Facebook 页面。 示例操作生成这种饲料是根据喜好内容在站点上,观看视频,评论和分享来自该站点的内容。 该插件也是站点的能够检测出是否包含插件活动的当前用户站点的登录到 Facebook 或不。 如果是这样,显示的饲料仅限于用户的朋友。 否则,该插件显示建议从整个网站,同时为用户提供登录 Facebook,接收目标更集中反馈的选项。 下面是您需要 (请注意该插件的活动只可消耗,通过 HTML5 标记) 的标记:

<div class="fb-activity"   data-site="www.yoursite.com"   data-app-id="xxxxxxxxxxxxx"   data-width="300"   data-height="300"   data-header="true"   data-recommendations="true"> </div>

您必须纳入这类标记的顺序中的网页在 JavaScript SDK,交出什么是图 4

The Activity Plug-in in Action
图 4 插件在行动活动

访问时间轴

在过去的列,我使用 Facebook C# SDK 将张贴到墙上纯文本和附件。 开机自检后,朋友和粉丝们可以与其进行交互的喜欢它、 共享它,对其进行评论。 让我们看看它所需的读取给定用户的时间轴。

Facebook 需要将一个独特和相当长的 ID 是否分配给任何帐户的配置文件或风扇页。 用户,但是,不要使用此 ID 来标识页。 所以第一件事要做,以便读取时间线是公共的名称相匹配的页面 (或用户) 为基础的 Facebook id。 作为仅仅是练习,您可以到任何浏览器的地址栏中键入以下:https://graph.facebook.com/your-page-name。

"您页面名称"占位符是只是帐户的名称,使之达到页面的键入。 打算读时间轴的 ID 是帐户的唯一的第一步。 您还需要进行身份验证来访问饲料。 底线是直接违背基本的 Facebook 图形 API 的任何操作需要 OAuth 认证。 这意味着还必须在这里做讨论过去列中相同的初步步骤:

  • 创建 Facebook 应用程序来处理在 Facebook 的后端。
  • 已授权 Facebook 的应用程序为该帐户的用户。 此步骤提供了将绑定在一起 (为在有限的时间) 用户的访问令牌和 Facebook 的应用程序。
  • 使用键访问令牌对 Graph API 从宿主应用程序 (例如,ASP.NET MVC 应用程序) 内执行操作。

一旦获得,可以保存到 cookie 和用于每个进一步操作,直到它过期的访问令牌。 这里是从 Facebook 服务器获取原料的饲料所需的代码:

var name = "name-of-the-user";    // For example, joedummy   var client =     new FacebookClient(access_token);   dynamic user = client.Get(name);    dynamic feed =     client.Get(name + "/feed");

Facebook 客户端第一次调用不严格要求访问令牌,因为预计它只返回公共信息与用户有关的。 用户变量公开名字、 值替换 last_name、 id 和位置等属性。 根据你的意图,您可能不需要放置此调用。 Facebook 客户端第二次调用是什么真的能起到作用。 它需要一个字符串,表示用户的饲料的路径。 您建立连接的帐户的名称与 /feed 的路径的字符串。 作为回报,你获取动态 C# 对象构建基础的 JSON 流出。 图 5 显示的 JSON 流结构所反映的小提琴手。

The JSON Structure of a Timeline Item in Facebook
图 5 Facebook 时间线项目的 JSON 结构

它显示了所选的日志有两种类型的行动 — — 它一直喜欢和评论。 它目前还计数 14 喜欢。 当您扩展节点提供有关对它发表评论或喜欢它的人的更多详细信息。 最后,您查找职位的内容。 JSON 一级职位的内容是邮件字段。

它是重要的是要注意不是所有的职位具有相同的结构 ; 这是为什么 Facebook C# SDK 并不使用平原、 静态定义的类作为数据传输对象 (Dto) 的原因。 常见的障碍是职位缺乏消息、 链接和图片,但包括故事字段。 这是如此,例如,当管理员添加的照片集合。

Facebook C# 只是 sdk 您动态 C# 对象。 解析到多个定义的数据类型 — — 或决定的对象很好因为是点滴渗透到视图 — — 是你的电话。 图 6 显示了一些代码,尝试到经典的 C# 类分析的动态对象。

图 6 解析成一个经典的 C# 类的动态对象

public class FacebookPost {   public String PostId { get; set; }   public String Author { get; set; }   public String Picture { get; set; }   public String Link { get; set; }   public String Published { get; set; }   public String ContentHtml { get; set; }   private delegate String ExtractDelegate();   public static IList<FacebookPost> Import(dynamic data)   {     var posts = new List<FacebookPost>();     foreach (var item in data)     {       var tempItem = item;       var fb = new FacebookPost       {         PostId = Extract(() => tempItem["id"]),         Published = Extract(() => tempItem["created_time"]),         Picture = Extract(() => tempItem["picture"]),         Link = Extract(() => tempItem["link"]),         Author = Extract(() => tempItem["from"]["name"])       };       try       {         fb.ContentHtml = Extract(() => tempItem["message"]);       }       catch       {       }       if (!String.IsNullOrEmpty(fb.ContentHtml))         posts.Add(fb);       }       return posts;     }   private static String Extract(ExtractDelegate func)   {     try {       return func();     } catch {         return null;       }   } }

 

此代码的最令人讨厌的一部分就找到检查给定的属性是否您解析动态对象上定义的有效途径。不少 stackoverflow.com 用户同意中所示的方法图 6、 基于委托。

社交网络处理开辟了一个全新的世界,成为开发商认为,实现新的创造性应用的机会的可能性。作为.NET 开发人员,您应一个朋友的 Facebook C# sdk。

Dino Esposito 是《Architecting Mobile Solutions for the Enterprise》(Microsoft Press,2012 年)和《Programming ASP.NET MVC 3》(Microsoft Press,2011 年)的作者,同时也是《Microsoft .NET:Architecting Applications for the Enterprise》(Microsoft Press,2008 年)的合著者。Esposito 定居于意大利,经常在世界各地的业内活动中发表演讲。有关他的情况,请访问 Twitter twitter.com/despos

衷心感谢以下技术专家对本文的审阅:登斯莫尔 · 斯科特 (微软)
斯科特 · 登斯莫尔是高级的发展导致在 Microsoft 致力于在 Visual Studio 中的功能。他一直在敏捷开发团队在大型的公司环境和小型创业公司过去 10 年了。他的主要兴趣是云计算、 移动设备计算和社会计算。你可以找到他在 scottdensmore.com 和在 Twitter 上 @scottdensmore