是否可以发布状态更新并使用Facebook图形API添加图像文件?

时间:2011-11-22 10:52:43

标签: facebook-graph-api

我想将状态更新发布到我的Feed并使用facebook图表api添加驻留在磁盘上的照片。 这是可能的还是我必须提供图像的超链接地址? 我知道可以使用Post对象的source参数向相册添加照片,但我正在寻找一种方法来附加图像文件进行状态更新。

2 个答案:

答案 0 :(得分:1)

这绝对是可能的,因为我们使用Facebook C#API将图像直接发布到相册和墙上,这些API发布到图API

我们使用FacebookMediaObject来实现这一目标,但我相信这只会创建所需的帖子表单数据。这是代码,所以你可以看看是否有帮助:

var facebookClient = new FacebookClient(entry.AccessToken);
var mediaObject = new FacebookMediaObject
            {
                FileName = filename,
                ContentType = "image/jpeg"
            };
var fileBytes = System.IO.File.ReadAllBytes(filename);
mediaObject.SetValue(fileBytes);

IDictionary<string, object> upload = new Dictionary<string, object>();
upload.Add("name", imagename);
upload.Add("message", message);
upload.Add("@file.jpg", mediaObject);

var result = facebookClient.Post("/" + albumId + "/photos", upload) as JsonObject;

请注意分配mediaObject的“@ file.jpg”字段名称。

希望这会有所帮助。

更新

您可能必须先将图像发布到用户墙,然后收到一个对象ID,然后您可以使用object_id字段在帖子中引用该对象ID。

答案 1 :(得分:0)

您可以在不使用Facebook SDK的情况下执行此操作。以下是通过直接Facebook API上传图片的代码。

            var ImagePath = "480.jpg";
            var caption = "Description of Photo";
            string fullurl = string.Format("https://graph.facebook.com/me/photos?caption={0}&access_token={1}", System.Web.HttpUtility.UrlEncode(caption), accessToken);
            WebClient client = new WebClient();
            var returnVar = client.UploadFile(fullurl, ImagePath);