2

我正在使用 Facebook C# SDK 6.0.20 并像这样发布到 facebook(服务器端流程)。

dynamic parameters = new ExpandoObject();
parameters.message = message;
parameters.description = description;
parameters.link = url;
parameters.name = url;
parameters.picture = smallImage;
parameters.caption = "www.mysite.com";
parameters.properties = new
{
    text = joinPrompter,
    href = url
};
parameters.actions = new
{
    name = joinPrompter,
    link = url
};
var api = new FacebookClient
{
    AccessToken = accessToken,
    AppId = ClientID,
    AppSecret = ClientSecret
};
result = api.Post("me/feed", parameters);

除了我要传递的属性外,一切都很好。它在最后的帖子中显示为

文字:现在加入!
链接:http ://www.mysite.com

我发给我/提要的帖子可能有什么问题?

4

2 回答 2

2

实际上属性应该在发布之前进行 JSON 编码。

JsonArray jsonArray = new JsonArray();
jsonArray.Add(new {
  text = joinPrompter,
  href = url
});

parameters.properties = jsonArray.ToString();

这是使用facebook-c#-sdk内部使用的SimpleJson的示例。

或者你可以简单地使用类似的东西:

parameters.properties = '[{"text":"Some text", "href":"http://example.com"}]';

更新:
似乎你可以使用IList<object>它应该由 Facebook C# SDK 自动编码:

IList<object> properties = new IList<object>();
properties.Add(new {
  text = joinPrompter,
  href = url
});
parameters.properties = properties;
于 2012-07-16T14:38:18.853 回答
1

问题不在于出色的 Facebook C# SDK。问题在于我使用它的方式。properties应该这样使用

parameters.properties = new {
    URL = new
    {
        text = joinPrompter,
        href = url
    }
};
于 2012-07-17T09:59:33.180 回答