2014-03-03 58 views
0

我正在開發WinService,它將文件系統上特定文件夾中的照片上傳到Facebook頁面(要上傳,我已將Facebook應用程序連接到Facebook頁面),其中文件夾名稱是將用於Facebook相冊的名稱。 所以,首先我創建了專輯,這很好,我有專輯ID。Facebook一次性上傳多張照片到相冊

我已經嘗試了幾種方式將照片上傳到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

此消息來自哪裏?我不明白... – Tobi

+0

哪條消息?我描述了我的問題。 –

+0

「...但每次每個上傳的照片都會生成一個彈出式通知..」 – Tobi

回答

0

我看到任何人完成此操作的唯一方法(單一Feed項目或單個通知)是通過使用Open Graph功能。它真的很臭,基礎圖形API沒有一個簡單的方法來做到這一點。無論您嘗試批量請求(方式2),附加照片網址還是附加原始圖片數據,都會獲得多個Feed項目和多個通知。 Twitter的API通過強制您上傳多張照片並獲取media_ids,然後將其附加到Tweet,從而達到您想要的效果。

請參閱https://developers.facebook.com/docs/opengraph/using-actions/v2.2#photos。我知道設置Open Graph可能不是您想要做的,但它似乎確實是本文發佈時的唯一方式。 Open Graph要求您無論如何都要使用用戶級訪問令牌,並且您正在使用頁面級令牌。所以,鑑於你的要求,它似乎還沒有可能。