私の知る限り、写真を投稿する方法は 2 つあります。
方法 1:
以下の fb ドキュメントは、提供された URL を使用して画像を投稿する方法を示しています。
https://developers.facebook.com/blog/post/526/?ref=nf
もちろん試してみましたが、投稿メソッドを使用してFacebook APIエクスプローラーでここでデバッグを試み、以下のようにパラメーターを入力したときに、画像のURLを受け入れないようです。
SomeAlbumID/photos?=access_token=MyTOKEN&url=http%3a%2f%2fcutree.com%2fcutreefbapp%2fimg1.bmp&message=ファミリー+ツリー
それは言う例外を返します
{
"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:
これは、fb が「写真を公開するには、写真ファイルを multipart/form-data として添付して POST リクエストを発行する」というように、バイト単位の画像データを Post 本文に添付する方法です。
ただし、誰もが c# 用の fb sdk を使用してそれを行っています。誰もがこの問題に対して簡単な http 投稿方法を提供できますか。
以下の方法で画像データをストリーミングしてみました
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());
}