Facebook一次将多张照片上传到相册

时间:2014-03-03 22:51:58

标签: c# facebook facebook-graph-api

我正在开发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张照片并获得单一通知?

请指教,谢谢。

1 个答案:

答案 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要求您无论如何都要使用用户级访问令牌,并且您正在使用页面级令牌。所以,鉴于你的要求,它似乎还不可能。