0

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

此处已在 SO 上询问了源自人们尝试的问题,但我找不到对 Graph API 规范的完整、清晰的解释以及使用 WebClient 或 System.Net 中的一些类似类的简单示例。

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

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

谢谢你的帮助,

卢克

4

2 回答 2

1

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

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

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

我会向您指出 facebook 文档,但您没有询问任何具体内容,因此除了登录页面外,没有什么可以指出您的。

于 2012-05-08T17:33:50.660 回答
1

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

我同意该文档在解释如何与大量资源交互方面相当贫乏。通常我会查看文档以获取有关字段和连接的信息,然后使用Graph API Explorer来了解如何构建请求。一旦我把它弄下来,就很容易用 C# 或其他方式实现。我使用的唯一 SDK 是 Facebook 的 Javascript SDK。我发现其他人(尤其是第 3 方)比滚动我自己的更复杂、错误或损坏。

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 ());
}
于 2012-05-08T17:51:31.747 回答