使用C#SDK在Facebook上将媒体发布到用户/页面墙

时间:2013-10-19 18:12:38

标签: c# facebook facebook-graph-api facebook-c#-sdk

我在我的应用程序中使用Facebook .Net SDK(http://facebooksdk.net/)。我需要将图像发布到用户或他的页面的墙上。

我有这段代码尝试这样做:

var postUrl = "<fbid>/feed";
var fbParameters = new Dictionary<string,object>();
fbParameters["message"] = postRequest.FacebookPostContent;
if (postRequest.MediaData != null && postRequest.MediaData.Length > 0)
{
     var stream = new MemoryStream(postRequest.MediaData);
     if (postRequest.ContentType.Equals("image/jpeg"))
     {
       postUrl = postUrl.Replace("/feed", "/photos");
       fbParameters["picture"] = new FacebookMediaStream { ContentType = postRequest.ContentType, FileName = DateTime.UtcNow.ToString("ddmmyyyyhhmmss") + "-photo.jpeg" }.SetValue(stream);
      }
}
if (!string.IsNullOrWhiteSpace(postRequest.FacebookPageId))
{
      fbUserID = postRequest.FacebookPageId;
}
postUrl = postUrl.Replace("<fbid>", fbUserID);
var result = await facebookClient.PostTaskAsync(postUrl, fbParameters);

看看我的postUrl变量。我用Facebook中的用户ID更新,如果是页面,则更新PageID,以便在正确的对象中正确发布帖子。如果要上传某些图片,请将其添加到字典中。

因此,考虑到这一点,我有以下问题:

  1. 当fbUserID是用户ID时,帖子与图像和描述完美匹配,但是当ID是PageID时,只发布描述文本而忽略图像(用户具有manage_page权限,所以我不要以为这是一个许可问题)。我的错误是图片没有张贴到页面的墙上?
  2. 如果我想发布视频而不是图片,我应该在此代码中更改哪些内容?
  3. 在SO中已经看到了其他技术的许多问题,但从来没有一个决定性的解决方案。

    非常感谢你的帮助,我真的很感激。

    此致 Gutemberg

2 个答案:

答案 0 :(得分:0)

知道了!

Facebook在页面内创建了一个名为其他人在测试页面上的最近帖子的部分,人们可以在那里发布图像,例如附件图标。为了直接发布到页面的feed / wall,我需要做的就是不使用用户access_token(即使用户授予了manage_pages权限),只需使用/ me / accounts对象中的access_token来获取相应的页面。 / p>

关于视频帖子,我只是将ContentType设置为“ video / mpeg ”并在服务器而不是在字典上设置图片参数,我已经设置了<视频字节[]的strong> video 字段。

谢谢!

此致

答案 1 :(得分:0)

作为替代方案,您可以尝试其中一个答案中显示的“共享内容”按钮:

Upload video on Facebook using Graph REST API on Windows Phone 8.1

我发现这比处理授权和手动发布更容易。