私はhttp://blog.blackballsoftware.com/2010/11/03/making-a-facebook-wall-post-using-the-new-graph-api-and-c/からコードを書き換えてFacebookに投稿するクラスを作成しています。このコードは、投稿データをURLエンコードしない限り動作します。例:投稿データが "message = Test、ignore"の場合、それは機能します。同じデータを "message%3dTest%2cplease + ignore"にURLエンコードすると、エラー "{" message ":"(#100)Missing message or attachment "、" type ":" OAuthException " "code":100}}。FacebookのポストデータをC#でURLエンコードする方法
投稿データをURLエンコードする必要がありますか?私は、このようなメッセージ "Test & Message"を投稿した場合、Testという単語だけが表示されるはずです。
以下に関連コードを示します。もしpostParams = HttpUtility.UrlEncode(postParams);コメントアウトされていれば、コードは動作します。そうでない場合、Facebookはメッセージが欠落しているというエラーを返します。
postParams = HttpUtility.UrlEncode(postParams);
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(postParams);
webRequest.ContentLength = bytes.Length;
System.IO.Stream os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
try
{
var webResponse = webRequest.GetResponse();
}
catch (WebException ex)
{
StreamReader errorStream = null;
errorStream = new StreamReader(ex.Response.GetResponseStream());
error = errorStream.ReadToEnd() + postParams;
}