我正在开发WinService,它将照片从文件系统上的特定文件夹上传到Facebook页面(上传,我已经制作了Facebook应用程序并将其连接到Facebook页面),其中文件夹名称是将用于Facebook的名称专辑。 所以,首先我创建专辑,这很好,我有专辑ID。
我尝试了几种将照片上传到Facebook相册的方法,但每次上传的照片都会生成一个弹出式通知。 WAY1:
FacebookClient fb = new FacebookClient(token.Trim());
//Perform upload
var imageStream = File.OpenRead(photo.Location);
fb.PostCompleted += (o, e) =>
{
imageStream.Dispose();
if (e.Cancelled || e.Error != null)
{
error = e.Error == null ? "canceled" : e.Error.Message;
}
};
dynamic res = fb.PostTaskAsync("/" + fbAlbumID + "/photos", new
{
message = String.Empty,
file = new FacebookMediaStream
{
ContentType = "image/jpg",
FileName = Path.GetFileName(photo.Location)
}.SetValue(imageStream)
});
res.Wait();
var dictionary = (IDictionary<string, object>)res.Result;
way2:
dynamic result = fb.Batch(
new FacebookBatchParameter(HttpMethod.Post, "/" + albumId + "/photos",
new Dictionary<string, object>
{
{"message", "picture 1 msg"},
{
"pic1",
new FacebookMediaObject {ContentType = "image/jpeg", FileName = "p4.jpg"}.SetValue(
File.ReadAllBytes(
file1path))
}
}),
new FacebookBatchParameter(HttpMethod.Post, "/" + albumId + "/photos",
new Dictionary<string, object>
{
{"message", "picture 1 msg"},
{
"pic2",
new FacebookMediaObject {ContentType = "image/jpeg", FileName = "p4.jpg"}.SetValue(
File.ReadAllBytes(
file2path))
}
}
)
);
但是对于每种方式,每张上传的照片都会为喜欢该页面的用户生成弹出式通知。 他们,“喜欢”,将此视为垃圾邮件。
如何在一张相册中上传10张照片并获得单一通知?
请指教,谢谢。
答案 0 :(得分:0)
我见过有人完成此任务(单个Feed项或单个通知)的唯一方法是使用 Open Graph 功能。它真的很臭,基本图API没有一个简单的方法来做到这一点。无论您是尝试批量处理请求(方式2),附加照片网址还是附加原始图像数据,您都会获得多个Feed项和多个通知。 Twitter的API通过强制您上传多张照片并获取media_ids来实现您想要的效果,然后您可以将其附加到推文上。
见https://developers.facebook.com/docs/opengraph/using-actions/v2.2#photos。我知道设置Open Graph可能不是你想要做的,但它似乎真的是这个帖子发布时的唯一方式。 Open Graph要求您无论如何都要使用用户级访问令牌,并且您正在使用页面级令牌。所以,鉴于你的要求,它似乎还不可能。