如何在墙上张贴图片?

问题描述:

任何人都可以将照片发布到当前用户的墙上吗?这是行不通的,如果图片参数是现有的图片url帖子不显示!我正在使用最新的FB C#SDK 5.0.8 Beta ...如何在墙上张贴图片?

var args = new Dictionary<string, object>(); 
args["name"] = "My App"; 
args["link"] = @"http://apps.facebook.com/test/"; 
args["caption"] = "My Caption"; 
args["description"] = "My Description"; 
args["picture"] = @"http://www.test.com/test.jpeg"; 
args["message"] = "My Message"; 
args["actions"] = ""; 
FbClient.PostAsync(@"/me/feed", args); 

这是版本5.0.8中的已知错误。它已在当前的源代码中得到修复,并将在下一个版本中发布。

下面是我如何处理张贴照片到Facebook用户的墙上。 ImagePath和ImageName是我传入包含此代码的函数的字符串参数。

var fbApp = new FacebookApp(); 
    var auth = new CanvasAuthorizer(fbApp); 

    if (auth.IsAuthorized()) 
    { 

     //Create a new dictionary of objects, with string keys 
     Dictionary<string, object> parameters = new Dictionary<string, object>(); 

     string strDescription = txtDescription.Text; 

     //Add elements to the dictionary 
     if (string.IsNullOrEmpty(ImagePath) == false) 
     { 
      //There is an Image to add to the parameters     
      FacebookMediaObject media = new FacebookMediaObject 
      { 
       FileName = ImageName, 
       ContentType = "image/jpeg" 
      }; 

      byte[] img = File.ReadAllBytes(ImagePath); 
      media.SetValue(img); 

      parameters.Add("source", media); 
      parameters.Add("message", strDescription); 

      try 
      { 
       dynamic result = fbApp.Api("/me/photos", parameters, HttpMethod.Post); 

      } 
      catch (Exception ex) 
      { 
       //handle error.... 
       string strErr = ex.Message.ToString(); 
       lblValidationMsg.Text = strErr; 
      } 
     }    

    } 

可以在用户使用墙后(“我/照片”

[TestMethod] 
    [DeploymentItem(@".\resources\velas_navidad.gif", @".\")] 
    public void Post_to_photos() 
    { 
     var ImagePath = "velas_navidad.gif"; 
     Assert.IsTrue(File.Exists(ImagePath)); 

     var client = new FacebookClient(token); 
     dynamic parameters = new ExpandoObject(); 

     parameters.message = "Picture_Caption"; 
     parameters.subject = "test 7979"; 
     parameters.source = new FacebookMediaObject 
     { 
       ContentType = "image/gif", 
       FileName = Path.GetFileName(ImagePath) 
     }.SetValue(File.ReadAllBytes(ImagePath)); 

     dynamic result = client.Post("me/photos", parameters); 

     Thread.Sleep(15000); 
     client.Delete(result.id); 
    } 
+0

需要哪些权利这样做吗? – daniel 2015-04-16 09:05:13