如何从c#web服务发布到facebook墙?

如何从c#web服务发布到facebook墙?,c#,facebook,service,twitter,C#,Facebook,Service,Twitter,我试过很多方法,但都不知道如何通过网络服务将内容发布到facebook的墙上。有人知道这是否可能吗?似乎发布内容的唯一方法是在网站中包含登录页面,这不是我想要做的。对于twitter,我可以用不到10行代码在tweet上发送消息;只需将用户名/密码添加到请求头并流式传输消息。我想我想问的是,有没有一种类似的简单方法可以为facebook做到这一点?提前谢谢 你需要先做。在facebook上设置此项时的重要设置有: 连接->Facebook连接设置->连接URL 这个url有两个用途。首先,该UR

我试过很多方法,但都不知道如何通过网络服务将内容发布到facebook的墙上。有人知道这是否可能吗?似乎发布内容的唯一方法是在网站中包含登录页面,这不是我想要做的。对于twitter,我可以用不到10行代码在tweet上发送消息;只需将用户名/密码添加到请求头并流式传输消息。我想我想问的是,有没有一种类似的简单方法可以为facebook做到这一点?提前谢谢

你需要先做。在facebook上设置此项时的重要设置有:

连接->Facebook连接设置->连接URL 这个url有两个用途。首先,该URL将用作放置xd_receiver.htm文件的基础

因此,如果您的url是:
http://yoursite.com
那么您必须在url上有一个文件
http://yoursite.com/xd_receiver.htm
允许运行

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

虽然您不一定需要JavaScript客户端库来执行实际的发布。然而,你确实需要它来给你自己的权利,你需要张贴到墙上

高级->高级设置->应用程序类型 此设置为“桌面”

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

  • 您的API密钥
  • xd_receiver.htm文件的url
  • 有了这两件事,您需要在站点上创建一个web页面,该页面使用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>
    
    
    
    单击此处可授予脱机权限 访问权限。 单击以授予发布权限 流权限。 单击以授予读取流 许可。 FB_需求特性([“XFBML”],函数(){ init(“API密钥”,“xd_receiver.htm URL”); });
    值得注意的两件事是:

    • 您正在请求脱机访问。这是允许您在用户不在线时将其张贴到墙上的关键
    • read_stream权限,我不知道是否有必要发布到该流,但拥有它并没有坏处
    • 很明显,这是一个错误
    现在,当您转到这个页面时,JavaScript客户端库将负责呈现带有
    fb
    名称空间的标记

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

    登录后,页面将重新加载,
    fb:prompt permission
    标记将显示为链接。点击链接告诉Facebook,用户允许应用程序访问关于其个人资料的内容

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

    这将使用会话密钥填充文本框。因为您的应用程序已请求脱机访问,所以无论何时使用此会话密钥,Facebook都会识别它

    现在,您有以下信息:

    • 应用程序API密钥
    • 应用程序密钥(从应用程序页面获得)
    • 您要发布到的页面的用户id(您应该能够从您的Facebook url获取此信息)
    在这一点上,您应该能够使用.NET的任何Facebook API。我更喜欢这个

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

    运行你的应用程序。浏览器窗口将显示,提示您登录。登录后,应点击断点。在这一点上,您的应用程序机密(如果使用Facebook开发者工具包)应该有所不同(我称之为客户机密。请将此记录下来。这是您需要的第四条也是最后一条信息

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

    • 应用程序接口
    • 客户机密
    • 会话密钥
    • 要发布到的墙的用户id

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

    查看Facebook开发问题:)@Daniel Schaffer:当时,对于.NET来说,它比其他框架更适合我访问FB API。在引入新API时,进行新API调用也很容易,因为所有的管道都在那里。