0

请在 C# 中为我提供一段简单的代码,以便在 facebook 上发布照片,而无需使用非常著名的 facebook sdk for c#,据我所知,有两种发布照片的方法,

方法一:

下面的 fb 文档显示了一种使用提供的 url 发布图像的方法,

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

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

SomeAlbumID/photos?=access_token=MyTOKEN&url=http%3a%2f%2fcutree.com%2fcutreefbapp%2fimg1.bmp&message=Family+Tree

它返回一个异常说

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

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

我读过一些 fb 只接受来自几台服务器的图像的地方,任何人都可以帮助我。

方法二:

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

但是每个人都使用 c# 的 fb sdk 来做到这一点,任何人都可以为这个问题提供简单的 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());

}
4

2 回答 2

0

通过给出参数来发布照片url绝对有效。如果它不适合你,那么你做错了什么。

(我刚刚在 Graph API Explorer 上使用您的图片的 URL 进行了尝试,它按我的预期工作。)

当我尝试使用 post 方法在 facebook API explorer 上调试并输入如下参数时,

SomeAlbumID/photos?=access_token=MyTOKEN&url=http%3a%2f%2fcutree.com%2fcutreefbapp%2fimg1.bmp&message=Family+Tree

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

于 2012-09-29T16:14:03.283 回答
-1

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

您将不得不执行与此处发布的内容类似的操作。我正要从我的应用程序中发布我的代码,该代码完全适用于 Facebook,但它有点长。

于 2012-09-07T05:16:47.583 回答