您需要先create an application on Facebook。在 facebook 上进行设置时的重要设置是:
连接 -> Facebook 连接设置 -> 连接 URL
此网址有两个用途。首先,该 URL 将用作您放置 xd_receiver.htm 文件的 Cross Domain Communication Channel 的基础。
因此,如果您的 url 是:http://yoursite.com,那么您必须在 url http://yoursite.com/xd_receiver.htm 有一个文件,它允许 JavaScript Client Library for Facebook 运行。
但是,我强烈建议您不要使用您的根网址。在您的页面上选择一个您不链接的子目录。像http://yoursite.com/ex/fb 这样的东西会很好(我喜欢ex 表示“外部”,但它完全是主观的)。
虽然您不一定需要 JavaScript 客户端库来执行实际发布。但是,您确实需要它来赋予自己在墙上发布所需的权利。
高级 -> 高级设置 -> 应用程序类型
这设置为“桌面”。
设置应用程序后,请注意以下事项(来自应用程序的主页):
- 您的 API 密钥
- xd_receiver.htm 文件的网址
有了这两件事,您想在网站上创建一个网页,该网页使用 JavaScript 客户端库和 FBML,让您的应用程序有权发布到其墙上(或页面的墙上)。
在此页面中,您希望使用您的 API 密钥以及 xd_receiver.htm 文件的路径来初始化 JavaScript 客户端库。我有一个这样设置的 ASP.NET 页面:
<%@ Page Language="C#"%>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<script
src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/
FeatureLoader.js.php" type="text/javascript"></script>
</head>
<body>
<fb:login-button></fb:login-button>
<hr>
<fb:prompt-permission perms="offline_access">Click to grant offline
access permission.</fb:prompt-permission>
<fb:prompt-permission perms="publish_stream">Click to grant publish
stream permission.</fb:prompt-permission>
<fb:prompt-permission perms="read_stream">Click to grant read stream
permission.</fb:prompt-permission>
<input type="button" value="Get session key" onclick="
document.all('apikey').value=FB.Facebook.apiClient.
get_session().session_key;" />
<input type="text" size="100px" id="apikey" />
<script type="text/javascript">
FB_RequireFeatures(["XFBML"], function () {
FB.Facebook.init("API Key", "xd_receiver.htm URL");
});
</script>
</body>
</html>
需要注意的两点是:
现在,当您转到此页面时,JavaScript 客户端库将负责呈现带有 fb 命名空间的标签。
当您第一次看到它时,您会看到一个 Facebook Connect 按钮。单击它并使用您要发布到的墙的用户的凭据登录。
登录后,页面将重新加载,fb:prompt-permission 标签将呈现为链接。点击链接告诉 Facebook 用户允许应用程序访问他们的个人资料。
授予应用程序所有权限后(可能会出现一些对话框),单击“获取会话密钥”按钮。
这将使用会话密钥填充文本框。因为您的应用程序请求了offline_access,所以无论您何时使用此会话密钥,Facebook 都会识别它。
现在,您有以下信息:
- 应用程序 API 密钥
- 应用程序密钥(您从应用程序页面获得)
- 您要发布到的页面的用户 ID(您应该可以从您的 Facebook 网址获取)
此时,您应该能够使用任何适用于 .NET 的 Facebook API。我更喜欢Facebook Developer Toolkit。
使用您选择的组件创建一个简单的 Windows 窗体应用程序,并设置应用程序 API 和应用程序密钥。此外,在您的 Windows 窗体应用程序中调用登录之前,将会话密钥设置为上面的会话密钥。在登录调用后设置断点。
运行您的应用。应显示一个浏览器窗口,提示您登录。登录后,您应该点击断点。此时,您的应用程序密码(如果使用 Facebook 开发者工具包)应该不同(我称之为客户端密码。写下来。这是第四个,并且您应该需要的最后一条信息。
现在你已经拥有了所有你需要的东西:
- 应用程序 API
- 客户端密码
- 会话密钥
- 您要发布到的墙的用户 ID
现在,有了所有这些,当您进行 API 调用时,使用 client secret 代替 application secret,以及您的会话密钥,以及您应该能够从您的服务调用写入用户的墙(或用户拥有的页面,如果您有该 ID),而无需任何 UI 登录。