不使用c#sdk在facebook上发布照片
请提供一段简单的c#代码,以便在facebook上发布照片,而无需使用非常著名的facebook sdk for c#,据我所知,发布照片有两种方法 方法1: 下面的fb文档显示了使用提供的url发布图像的方法 当然我试过了,它似乎不接受我的图像url,当我试着在facebook API explorer上使用post方法调试时,输入了如下参数 SomeAlbumID/photos?=access\u token=MyTOKEN&url=http%3a%2f%2fcutree.com%2fcutreefbapp%2fimg1.bmp&message=Family+Tree 它返回一个异常,表示不使用c#sdk在facebook上发布照片,facebook,url,facebook-graph-api,post,photo,Facebook,Url,Facebook Graph Api,Post,Photo,请提供一段简单的c#代码,以便在facebook上发布照片,而无需使用非常著名的facebook sdk for c#,据我所知,发布照片有两种方法 方法1: 下面的fb文档显示了使用提供的url发布图像的方法 当然我试过了,它似乎不接受我的图像url,当我试着在facebook API explorer上使用post方法调试时,输入了如下参数 SomeAlbumID/photos?=access\u token=MyTOKEN&url=http%3a%2f%2fcutree.com%2fcu
{
"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只从几个服务器接收图像的文章,有人能帮我吗
方法2:
这是一种将以字节为单位的图像数据附加到Post正文的方法,fb说“要发布照片,请发出Post请求,并将照片文件附件作为多部分/表单数据。”
然而,每个人都使用fb sdk for 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());
}
公共MyFacebookClass FBPost(字符串URI、字符串参数)
{
System.Net.WebRequest req=System.Net.WebRequest.Create(“https://graph.facebook.com/“+URI);
req.ContentType=“应用程序/x-www-form-urlencoded”;
请求方法=“POST”;
byte[]bytes=BmpToBytes\u序列化(新位图(“C:\\Users\\atul\\cutreefbapp\\DefaultThumb.bmp”);
req.ContentLength=字节.Length;
System.IO.Stream os=req.GetRequestStream();
写入(字节,0,字节长度);
os.Close();
System.Net.WebResponse resp=req.GetResponse();
if(resp==null)返回null;
System.IO.StreamReader sr=新的System.IO.StreamReader(resp.GetResponseStream());
返回新的System.Web.Script.Serialization.JavaScriptSerializer().Deserialize(sr.ReadToEnd().Trim());
}
您的问题是您的代码不正确。为了在Facebook上发布一张照片,你需要使用一个由多个部分组成的数据帖子。我没有使用过C#SDK,但我确信它在提交图像之前在内部构建了一个多部分表单帖子
你将不得不做一些类似的事情。我正准备从我的应用程序中发布我的代码,这正是为Facebook所做的,但有点长。通过提供参数
url
发布照片肯定有效。如果它不适合你,那你就做错了
(我刚刚在Graph API Explorer上用您的图片的URL进行了尝试,它的工作方式与我预期的一样。)
当我尝试使用post方法在FacebookAPI浏览器上调试并输入如下参数时
SomeAlbumID/photos?=access\u token=MyTOKEN&url=http%3a%2f%2fcutree.com%2fcutreefbapp%2fimg1.bmp&message=Family+Tree
如果这是您试图发送到的实际地址,那么
照片?
和访问令牌
之间的=
显然是错误的。谢谢Frazell,我想我已经掌握了窍门,我将发布我完成的代码供其他人参考。我喜欢一切尽可能简化。“为了在Facebook上发布照片,你需要使用一个多部分表单的数据帖子。”——不,你不需要。使用url
参数而不是source
,并将可公开访问的图片url作为值也可以使用。@CBroe为什么否决投票?在Facebook的API文档中没有提到url查询字符串参数。FacebookAPI声明了多部分形式,C#SDK也使用了这种形式。这个Url参数是新的吗?