使用纯C#发布Facebook Feed项目的权威指南

时间:2012-05-08 16:35:26

标签: facebook facebook-graph-api facebook-wall

有没有人有明确的方式发布到用户的墙上,只使用.NET Framework或Silverlight?

人们已经在SO上询问了源于人们尝试的问题,但是我无法找到关于Graph API规范的完整,清晰的解释以及使用WebClient或System.Net中的类似类的简单示例。

我是否必须将所有Feed项属性作为参数发送到查询字符串中?我可以构造一个JSON对象来表示feed项并发送它(使用访问令牌作为唯一参数)吗?

我希望它不超过5行代码片段,否则,请指出FB文档中的规范。

感谢您的帮助,

2 个答案:

答案 0 :(得分:1)

我对.net或silverlight了解不多,但facebook api适用于简单的http请求。 所有不同的sdks(除了javascript之外)主要只是http请求的包装器,其中“功能”是将访问令牌添加到所有请求中。

并非所有请求都将参数作为查询字符串发送,在某些POST请求中,您需要在请求正文中发送它们(application / x-www-form-urlencoded),并且您不能将数据作为json发送。 / p>

如果C# sdk不符合您的喜好,您只需根据您的确切需求创建一个。 正如我所写,你只需要包装请求,你当然可以有一个方法,将json作为参数,并将其分解为与请求一起发送的不同参数。

我会指向你的facebook文档,但你没有问过任何具体内容,除了landing page之外没有什么可以指向你的。

答案 1 :(得分:1)

这取决于我们如何发布到用户的墙上。我们将帖子的数据放在请求体中(我认为我们发现它比包含请求的查询部分中的所有参数更可靠),它具有与URL编码的查询字符串相同的格式。

我同意文档在解释如何与大量资源进行交互方面相当差。通常,我会查看文档以获取有关字段和连接的信息,然后使用Graph API Explorer来了解如何构建请求。一旦我完成了它,它很容易用C#或其他方法实现。我使用的唯一SDK是Facebook的Javascript SDK。我发现其他人(尤其是第三方)比起自己的更复杂,越野车或破碎。

private void PostStatus (string accessToken, string userId)
{
    UriBuilder address = new UriBuilder ();
    address.Scheme = "https";
    address.Host = "graph.facebook.com";
    address.Path = userId + "/feed";
    address.Query = "access_token=" + accessToken;

    StringBuilder data = new StringBuilder ();
    data.Append ("caption=" + HttpUtility.UrlEncodeUnicode ("Set by app to describe the app."));
    data.Append ("&link=" + HttpUtility.UrlEncodeUnicode ("http://example.com/some_resource_to_go_to_when_clicked"));
    data.Append ("&description=" + HttpUtility.UrlEncodeUnicode ("Message set by user."));
    data.Append ("&name=" + HttpUtility.UrlEncodeUnicode ("App. name"));
    data.Append ("&picture=" + HttpUtility.UrlEncodeUnicode ("http://example.com/image.jpg"));

    WebClient client = new WebClient ();
    string response = client.UploadString (address.ToString (), data.ToString ());
}
相关问题