我已经尝试了很多东西,但无法弄清楚如何从网络服务将内容发布到 facebook 墙上。有谁知道这是否可能?似乎发布内容的唯一方法是在网站中包含一个登录页面,这不是我想要做的。对于推特,我可以用不到 10 行代码在推特上发布一条消息;只需将用户名/密码添加到请求 header 中并流式传输消息。我想我要问的是有没有类似的简单方法可以为 facebook 做到这一点?提前致谢!
最佳答案
您需要create an application on Facebook第一的。在 facebook 上设置时的重要设置是:
连接 -> Facebook 连接设置 -> 连接 URL
这个网址有两个目的。首先,该 URL 将用作您 Cross Domain Communication Channel 的基础。您放置 xd_receiver.htm 文件的位置。
所以如果你的网址是:http://yoursite.com
那么你必须在 url 上有一个文件 http://yoursite.com/xd_receiver.htm
这允许 JavaScript Client Library for Facebook运行。
但是,我强烈建议您不要使用您的根 url。选择一个您没有在页面上链接的子目录。类似 http://yoursite.com/ex/fb
会做得很好(我喜欢 ex
表示“外部”,但它完全是主观的)。
虽然您不一定需要 JavaScript 客户端库来执行实际发布。但是,您确实需要它来赋予自己在墙上张贴所需的权利。
高级 -> 高级设置 -> 应用程序类型
这设置为“ 桌面”。
设置好应用程序后,请注意以下事项(从应用程序的主页):
有了这两样东西,您就想在站点上创建一个网页,该网页使用 JavaScript 客户端库和 FBML 来授予您的应用程序在其墙(或页面的墙)上张贴的权利。
在此页面中,您希望使用 API key 以及 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 用户允许应用程序访问有关其个人资料的那些内容。授予应用程序所有权限后(可能会出现一些对话框),单击“获取 session key ”按钮。
这将使用 session key 填充文本框。因为您的应用程序已经请求了 offline_access,所以每当您使用该 session key 时,Facebook 都会识别它。
现在,您拥有以下信息:
此时,您应该能够使用任何适用于 .NET 的 Facebook API。我更喜欢 Facebook Developer Toolkit .
使用您选择的组件创建一个简单的 Windows 窗体应用程序,并设置应用程序 API 和应用程序 key 。此外,在调用登录 Windows 窗体应用程序之前,将 session key 设置为上面的 session key 。在登录调用后设置断点。
运行您的应用程序。应该会出现一个浏览器窗口,提示您登录。登录后,您应该点击断点。此时,您的应用程序 secret (如果使用 Facebook Developer Toolkit)应该有所不同(我称之为 客户端 secret 。写下来。这是您应该需要的第四条,也是最后一条信息。
现在你拥有了你需要的所有部分:
现在,有了所有这些,当您进行 API 调用时,请使用 客户 secret 代替 应用秘钥 ,以及您的 session key ,并且您应该能够调用以从您的服务写入用户的墙(或用户拥有的页面,如果您有该 ID),而无需任何 UI 登录。
关于c# - 如何从 c# 网络服务发布到 facebook 墙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353247/