c#在Facebook上发布照片而不使用c#sdk

时间:2012-09-07 05:03:27

标签: facebook url facebook-graph-api post photo

请在c#中提供一段简单的代码,在Facebook上发布照片,而不使用非常着名的facebook sdk for c#,据我所知,有两种发布照片的方法,

方法1:

下面的fb文档显示了使用提供的网址发布图片的方法

https://developers.facebook.com/blog/post/526/?ref=nf

当然我试过,它似乎不接受我的图片网址,当我在facebook API资源管理器上尝试使用post方法进行调试并输入如下参数时,

SomeAlbumID /照片= =的access_token&设为MyToken放大器;?URL = HTTP%3A%2F%2fcutree.com%2fcutreefbapp%2fimg1.bmp&安培;消息=家庭+树

它返回一个例外

{
  "error": {
    "message": "http\u00253a\u00252f\u00252fcutree.com\u00252fcutreefbapp\u00252fimg1.bmp is an internal url, but this is an external request.", 
    "type": "CurlUrlInvalidException"
  }
}

“内部网址,但这是外部请求。”我不确定这意味着什么,因为我使用的是在我的fbapp上注册的相同域名,并且还从服务器本身发出请求。

我已经阅读了一些fb只接受几台服务器的图片,有人可以帮我解决。

方法2:

这是一种方法,其中以字节为单位的图像数据与Post body附加,因为fb表示“要发布照片,请将照片文件附件作为multipart / form-data发出POST请求”。

但是每个人都使用fb sdk进行c#,任何人都可以为此问题提供简单的http post方法。

我已尝试使用以下方法流式传输图像数据

public MyFacebookClass FBPost(string URI, string Parameters)
{
    System.Net.WebRequest req = System.Net.WebRequest.Create("https://graph.facebook.com/" + URI);
    req.ContentType = "application/x-www-form-urlencoded";
    req.Method = "POST";
    byte[] bytes = BmpToBytes_Serialization(new Bitmap("C:\\Users\\atul\\cutreefbapp\\DefaultThumb.bmp"));
    req.ContentLength = bytes.Length;
    System.IO.Stream os = req.GetRequestStream();
    os.Write(bytes, 0, bytes.Length); 
    os.Close();
    System.Net.WebResponse resp = req.GetResponse();
    if (resp == null) return null;
    System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
    return new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<MyFacebookClass>(sr.ReadToEnd().Trim());

}

2 个答案:

答案 0 :(得分:0)

通过提供参数url发布照片明确有效。如果它不适合你,那么你做错了。

(我刚用Graph API资源管理器上的图片网址尝试了它,它按照我的预期工作。)

  

当我在facebook API资源管理器上尝试使用post方法进行调试并输入如下参数时,

     

SomeAlbumID /照片= =的access_token&设为MyToken放大器;?URL = HTTP%3A%2F%2fcutree.com%2fcutreefbapp%2fimg1.bmp&安培;消息=家庭+树

如果这是您尝试发布的实际地址,那么=photos?之间的access_token显然是错误的。

答案 1 :(得分:-1)

您遇到的问题是您的代码不正确。要将照片发布到Facebook,您需要使用多部分表单数据帖子。我没有使用C#SDK,但我确信它在提交图像之前在内部构建了一个多部分表单。

你必须做类似于posted here的事情。我准备发布我的代码,这个代码完全适用于我的应用程序,但它有点长。

相关问题