如何从ac #web服务发布到Facebook墙?

Bed*_*tic 5 c# twitter service facebook

我尝试了很多东西,无法弄清楚如何通过网络服务将内容发布到Facebook墙上.有谁知道它是否可能?发布内容的唯一方法似乎是在网站中包含一个登录页面,这不是我想要做的.对于twitter,我能够在10行代码中发送一条消息; 只需将用户名/密码添加到请求标头中并流式传输消息.我想我要问的是有一个类似的简单方法来为Facebook做这个吗?提前致谢!

cas*_*One 4

您需要首先在 Facebook 上创建一个应用程序。在 Facebook 上进行此设置时的重要设置是:

连接 -> Facebook 连接设置 -> 连接 URL

此网址有两个目的。首先,该 URL 将用作跨域通信通道的基础,您可以在其中放置 xd_receiver.htm 文件。

因此,如果您的 url 是:http://yoursite.com那么您必须在该 url 处有一个文件http://yoursite.com/xd_receiver.htm,该文件允许Facebook 的 JavaScript 客户端库运行。

但是,我强烈建议您不要使用根 URL。选择一个您不在页面上链接的子目录。类似的东西http://yoursite.com/ex/fb会做得很好(我喜欢ex“外部”,但它完全是主观的)。

虽然你不一定需要JavaScript 客户端库来执行实际的发布。但是,您确实需要它来赋予自己发布到墙上所需的权利。

高级 -> 高级设置 -> 应用程序类型

这设置为“桌面”。

设置应用程序后,请注意以下事项(在应用程序的主页上):

  1. 您的 API 密钥
  2. xd_receiver.htm 文件的 URL

掌握了这两件事后,您希望在网站上创建一个网页,该网页使用 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>
Run Code Online (Sandbox Code Playgroud)

值得注意的两件事是:

  • 您正在请求 Offline_access扩展权限。这是允许您在用户不在线时向用户留言墙发布内容的关键。
  • read_stream 权限,我不知道是否有必要发布到流,但拥有它并没有什么坏处。
  • 显然,publish_stream权限

现在,当您转到此页面时,JavaScript 客户端库将负责使用fb命名空间呈现标签。

当您第一次看到它时,您会看到一个 Facebook Connect 按钮。单击它并使用您要发布到的墙的用户的凭据登录。

登录后,页面将重新加载,fb:prompt-permission标签将呈现为链接。单击链接会告诉 Facebook 用户允许应用程序访问有关其个人资料的信息。

授予应用程序所有权限后(在此过程中可能会出现一些对话框),单击“获取会话密钥”按钮。

这将使用会话密钥填充文本框。由于您的应用程序已请求offline_access,因此每当您使用此会话密钥时,Facebook都会识别该会话密钥。

现在,您拥有以下信息:

  • 应用程序 API 密钥
  • 应用程序密钥(您从应用程序页面获得)
  • 您要发布到的页面的用户 ID(您应该能够从您的 Facebook 网址获取此信息)

此时,您应该能够使用任何适用于 .NET 的 Facebook API。我更喜欢Facebook 开发者工具包

使用您选择的组件创建一个简单的 Windows 窗体应用程序,并使用应用程序 API 和应用程序密钥。另外,在调用Windows 窗体应用程序登录之前,请将会话密钥设置为上面的会话密钥。在登录调用后设置断点。

运行您的应用程序。应该会出现一个浏览器窗口,提示您登录。登录后,您应该会遇到断点。此时,您的应用程序密钥(如果使用 Facebook Developer Toolkit)应该有所不同(我将其称为客户端密钥。将其写下来。这是您应该需要的第四条也是最后一条信息。

现在您已拥有所需的所有部件:

  • 应用程序接口
  • 客户秘密
  • 会话密钥
  • 您要发布到的墙的用户 ID

现在,有了所有这些,当您进行 API 调用时,使用客户端密钥代替应用程序密钥以及您的会话密钥,并且您应该能够进行调用以写入用户的墙,(或用户拥有的页面(如果您有该 ID),无需任何 UI 登录。