请在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());
}
答案 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的事情。我准备发布我的代码,这个代码完全适用于我的应用程序,但它有点长。