使用 ASP.NET 开发 Facebook Connect 应用程序






4.72/5 (31投票s)
使用 ASP.NET 开发 Facebook Connect 应用程序的分步方法
引言
Facebook 近日因其多功能性和广泛的支持而成为开发人员关注的焦点。我一直想使用 Facebook API 来探索其功能。几个月前,我参与了一个需要 Facebook 集成的项目,该项目需要处理 Facebook 用户的朋友数据等。因此,我开始深入研究 Facebook API。通过 API 可以实现许多很酷的功能。在本文中,我将尝试总结开发 Facebook Connect 应用程序的分步方法。
为 Facebook 开发应用程序
为 Facebook 平台开发应用程序有两种选择:一种是 Canvas,另一种是 Connect。如果您创建 Facebook 应用程序,设置过程中最令人困惑的部分之一是选择让您的应用程序使用 IFrames
还是 FBML
。IFrame
Canvas 页面非常直接。当用户在 Facebook 上加载页面时,例如 http://apps.facebook.com/APP_NAME/somepage,Facebook 会提供一个包含大 Iframe
的网页,应用程序会加载到提供的 IFRAME
中。FBML Canvas 页面则略有不同。当用户请求类似 http://apps.facebook.com/APP_NAME/somepage 的页面时,Facebook 服务器会向托管应用程序的应用程序服务器发送一个请求。这将是一个 HTTP POST
请求,发送到一个类似 http://www.yourserver.com/callbackurl/canvaspage 的 URL。本文不涉及基于 IFRAME
的 Canvas 应用程序,因此我们将专注于 FBML Connect 应用程序。

Connect 应用程序基础
Facebook Connect 是一套强大的开发人员 API。该 API 处理用户与 Facebook 账户的交互,并提供一种方式,使应用程序可以访问用户的个人资料信息和朋友列表,写入用户的墙,以及在用户允许的情况下向用户发送电子邮件。开发 Facebook Connect 应用程序涉及将一些 XFBML 标签添加到 HTML 页面。Facebook Connect 使用跨域通信通道为每个 XFBML 标签打开一个 HTML 页面上的 iframe。当用户点击一个标签时,Facebook Connect 会处理交互,让用户登录,访问朋友数据、用户数据等。
Facebook Connect 应用程序可以使用以下一项或多项:
- XFBML 标签(XFBML 是一种将 FBML 嵌入 HTML 页面的方法)
- JavaScript,调用 JavaScript 客户端库
- 任何语言的代码,调用 Facebook REST API(在我的情况下,我使用了 ASP.NET 和 Facebook .NET 工具包来调用 REST)
配置 Connect 应用程序
将应用程序集成/开发到 Facebook 中需要一个 API 密钥和密钥,Facebook 将使用它们来验证您在 Facebook 平台上的应用程序——这称为身份验证。如果您对 OAuth 还不了解,最简单的定义是:OAuth 协议使用户能够在不共享密码的情况下向第三方提供对其 Web 资源的访问权限(您可以在 https://oauth.ac.cn/ 找到有关身份验证的详细信息)。通过 Facebook API 密钥,应用程序可以进行身份验证,并可以检索敏感用户数据,甚至修改用户数据,前提是用户允许应用程序这样做。要为应用程序获取 API 密钥和密钥,您需要遵循以下步骤:
- 导航到 Facebook 开发者中心并请求新应用程序。
- 选择一个合适的应用程序名称(我的应用程序名称是 Galib's R&d Lab)。
- 导航到基本选项卡,您可以在此处找到 API 密钥/密钥。
- 为您的应用程序提供简短的描述。
- 导航到 Connect 选项卡。提供应用程序的完整 URL(我的应用程序 URL 是 www.imgalib.com/demo/facebook/)。
- 导航到高级选项卡,然后在高级设置中选择 Web。
- 选择启用/禁用沙盒模式。启用模式仅允许应用程序的开发者查看它。
- 保存您的设置。
请记住,以上步骤是配置应用程序的最佳步骤,还提供了许多其他配置选项,请随时根据您的需求进行配置。
Facebook 工具包基础
Facebook 工具包是 Facebook 提供的 API 的 .NET 版本。它非常容易集成到 .NET 应用程序中。该工具包仍在开发中,新功能不断添加,并且对早期版本进行改进。最新版本是 3.0。我发现在不同版本之间存在一些差异,因为在 2.0 版本中可用的一些功能在 3.0 版本中不可用。因此,如果您需要使用此工具包开发应用程序,则需要持续关注最新版本和更改,直到发布稳定版本。我为这个应用程序使用了最新的 Facebook 工具包 3.0 版本。
使用示例代码
为了实现 Connect 应用程序,您需要经历一些配置步骤。首先,您需要包含以下 JavaScript 库,这将帮助您使用 FBML 标签。
http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php
您需要在根目录下放置 xd_receiver.htm 文件。此文件处理跨域身份验证。为了从您的 Facebook 帐户获取好友列表,您首先需要通过下面的 FBML 标签允许应用程序访问您的 Facebook 帐户
<fb:login-button onlogin="window.location.reload()"></fb:login-button>
此标签将打开一个弹出窗口,要求授权访问用户帐户。其次,您需要附加另一个 FBL 标签,该标签将向用户请求其他权限,我的应用程序请求邮件权限,即,如果用户允许邮件权限,那么其他应用程序用户可以向允许邮件权限的用户发送邮件。
<fb:prompt-permission perms="email"> allow mail permission</fb:prompt-permission>
还有许多其他扩展权限参数可用。您可以从以下链接查看 Facebook 允许的可用权限:
现在,我们快速看一下示例代码。您会看到我有一个名为 ConnectAuthentication.cs 的类,该类负责与 API 密钥和密钥进行连接,检索 FB 在身份验证完成后提供的 Facebook cookie。该 cookie 的命名约定是:
ApiKey + "_user"
一个示例应用程序将检索已认证用户的的朋友列表。为此,您需要当前活跃的 FB 会话。Facebook 工具包可以为您完成这项工作。您需要做的是使用下面的代码:
/*
ConnectAuthentication.ApiKey is API key for your application
provided during application registration with FB
ConnectAuthentication.SecretKey is secret key for your application
provided during application registration with FB
*/
ConnectSession connectSession = new ConnectSession
(ConnectAuthentication.ApiKey,ConnectAuthentication.SecretKey);
使用这个 ConnectSession
,您需要调用 REST。您可以获取当前已认证用户的信息、朋友列表等等。
Api api = new Api(CurrentSession);
List<long> myFrndId = (List<long>)api.Friends.Get();
IList<user> usrFrnds = api.Users.GetInfo(myFrndId);
// Bind to GridView to display
grvFriends.DataSource = usrFrnds;
grvFriends.DataBind();
在上面的代码块中,第一行使用 Facebook 工具包通过当前已认证的会话创建 REST API 的实例。第二行使用 API 实例请求好友 ID。第三行请求好友的详细信息,并将 friendId 作为参数传递。Facebook 工具包附带用户对象,因此您无需创建自定义用户对象。最后但同样重要的是,将数据绑定到 gridview
。就这样……您的 Connect 应用程序现在就可以运行了。
请阅读示例代码 zip 文件中提供的 readme.txt,了解如何运行示例代码。
实时演示
您可以尝试此应用程序的实时演示,托管在 www.imgalib.com/demo/facebook/,或者您可以访问 Facebook 应用程序主页。