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

Facebook graph api 是否可以发布状态更新并使用facebook graph API添加图像文件?,facebook-graph-api,Facebook Graph Api,我想使用facebook graph api将状态更新发布到我的订阅源,并添加一张驻留在磁盘上的照片。 这是可能的还是必须提供图像的超链接地址? 我知道可以使用对象的源参数将照片添加到相册中,但我正在寻找一种方法,通过附加的图像文件进行状态更新。这是绝对可能的,因为我们已经使用Facebook C#API将图像直接发布到相册和墙上,该API将发布到graph API 我们使用FacebookMediaObject来实现这一点,但我相信这只会创建所需的post表单数据。下面是代码,如果有帮助,您可

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

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

我们使用FacebookMediaObject来实现这一点,但我相信这只会创建所需的post表单数据。下面是代码,如果有帮助,您可以查看:

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;
var facebookClient=新facebookClient(entry.AccessToken);
var mediaObject=新的FacebookMediaObject
{
FileName=FileName,
ContentType=“图像/jpeg”
};
var fileBytes=System.IO.File.ReadAllBytes(文件名);
mediaObject.SetValue(文件字节);
IDictionary upload=新字典();
上传。添加(“名称”,图像名称);
上传。添加(“消息”,消息);
upload.Add(“@file.jpg”,mediaObject);
var result=facebookClient.Post(“/”+albumId+“/photos”,upload)作为JsonObject;
注意分配给mediaObject的字段名“@file.jpg”

希望这有帮助

更新
您可能需要先将图像发布到用户墙上,然后收到一个对象ID,您可以在post中使用对象ID字段引用该ID。

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

我们使用FacebookMediaObject来实现这一点,但我相信这只会创建所需的post表单数据。下面是代码,如果有帮助,您可以查看:

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;
var facebookClient=新facebookClient(entry.AccessToken);
var mediaObject=新的FacebookMediaObject
{
FileName=FileName,
ContentType=“图像/jpeg”
};
var fileBytes=System.IO.File.ReadAllBytes(文件名);
mediaObject.SetValue(文件字节);
IDictionary upload=新字典();
上传。添加(“名称”,图像名称);
上传。添加(“消息”,消息);
upload.Add(“@file.jpg”,mediaObject);
var result=facebookClient.Post(“/”+albumId+“/photos”,upload)作为JsonObject;
注意分配给mediaObject的字段名“@file.jpg”

希望这有帮助

更新
您可能需要先将图像发布到用户墙上,然后接收一个对象ID,您可以在post中使用对象ID字段引用该对象ID。

您无需使用Facebook SDK即可完成此操作。下面是通过DirectFacebookAPI上传图像的代码

            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);

您无需使用Facebook SDK即可完成此操作。下面是通过DirectFacebookAPI上传图像的代码

            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);

谢谢你的意思是先将照片上传到相册,然后在墙上发布更新,并链接到此照片?如果你在帖子中使用用户id而不是相册id,那么它将转到他们的默认照片集,我相信问题在于,上述内容实际上不是状态更新,而是照片上传。尝试此操作时,照片已添加到相册中,但我必须单击相册以获取此信息,因此状态提要未更新。不过,当我想把它贴到墙上的相册上时,它确实起到了预期的作用。谢谢。你的意思是先将照片上传到相册,然后在墙上发布更新,并链接到此照片?如果你在帖子中使用用户id而不是相册id,那么它将转到他们的默认照片集,我相信问题在于,上述内容实际上不是状态更新,而是照片上传。尝试此操作时,照片已添加到相册中,但我必须单击相册以获取此信息,因此状态提要未更新。然而,当我把我想要的相册贴到墙上时,它确实起到了预期的作用。