C# Facebook一次将多张照片上传到相册
我正在开发WinService,它可以将照片从文件系统中的特定文件夹上传到Facebook页面(要上传,我已经制作了Facebook应用程序并将其连接到Facebook页面),其中文件夹名是将用于Facebook相册的名称。 所以,首先我创建了相册,它运行良好,我有相册id 我尝试了几种将照片上传到Facebook相册的方法,但每次上传的照片都会生成一个弹出通知。 方式1:C# Facebook一次将多张照片上传到相册,c#,facebook,facebook-graph-api,C#,Facebook,Facebook Graph Api,我正在开发WinService,它可以将照片从文件系统中的特定文件夹上传到Facebook页面(要上传,我已经制作了Facebook应用程序并将其连接到Facebook页面),其中文件夹名是将用于Facebook相册的名称。 所以,首先我创建了相册,它运行良好,我有相册id 我尝试了几种将照片上传到Facebook相册的方法,但每次上传的照片都会生成一个弹出通知。 方式1: FacebookClient fb=新的FacebookClient(token.Trim()); //执行上传 var
FacebookClient fb=新的FacebookClient(token.Trim());
//执行上传
var imageStream=File.OpenRead(photo.Location);
fb.PostCompleted+=(o,e)=>
{
Dispose();
如果(e.取消| | e.错误!=null)
{
error=e.error=null?“已取消”:e.error.Message;
}
};
dynamic res=fb.PostTaskAsync(“/”+fbAlbumID+“/photos”),新建
{
message=String.Empty,
文件=新FacebookMediaStream
{
ContentType=“image/jpg”,
FileName=Path.GetFileName(photo.Location)
}.SetValue(图像流)
});
res.Wait();
变量字典=(IDictionary)res.Result;
方式2:
dynamic result=fb.Batch(
新的FacebookBatchParameter(HttpMethod.Post,“/”+albumId+“/photos”,
新词典
{
{“消息”,“图片1消息”},
{
“pic1”,
新的FacebookMediaObject{ContentType=“image/jpeg”,FileName=“p4.jpg”}.SetValue(
File.ReadAllBytes(
文件1路径)
}
}),
新的FacebookBatchParameter(HttpMethod.Post,“/”+albumId+“/photos”,
新词典
{
{“消息”,“图片1消息”},
{
“pic2”,
新的FacebookMediaObject{ContentType=“image/jpeg”,FileName=“p4.jpg”}.SetValue(
File.ReadAllBytes(
文件2路径)
}
}
)
);
但对于每一种方式,每一张上传的照片都会为喜欢该页面的人生成弹出式通知。
他们“喜欢者”认为这是垃圾邮件
如何实现在一个相册中上传10张照片并发出一次通知
请给我一些建议,谢谢 我所见过的任何人实现这一点(单个提要项或单个通知)的唯一方法是使用开放图功能。基本图形API没有一种简单的方法来实现这一点,这真是糟糕透了。无论您尝试批处理请求(方式2)、附加照片url或附加原始图像数据,您都将获得多个提要项和多个通知。推特的API通过强制你上传多张照片并取回媒体ID来实现你想要的,然后你可以将媒体ID附加到推特上
看。我知道,设置开放图可能不是你想要做的,但它似乎真的是唯一的方式在这篇文章的时间。OpenGraph要求您无论如何都使用用户级访问令牌,并且您使用的是页面级令牌。所以,考虑到您的需求,这似乎还不可能。这条消息来自哪里?我不明白…哪条消息?我已经描述了我的问题。“…但每次上传的照片都会生成一个弹出通知…”它会显示在左下角的弹出窗口和通知部分。喜欢这样的人认为这是垃圾邮件,他们不希望每个图像都被通知。如果他们有一个通知“10张照片上传到相册新年”就可以了。举例
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;
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))
}
}
)
);