请在 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());
}