フィードにメッセージを投稿するFacebookアプリケーションを書いています。HTTP POSTを使用したグラフAPIを使用して、 「I'm Roy」というメッセージをフィードに投稿しようとすると、次の結果「I\'mRoy」が表示され続けます。何故ですか?PHPを使用してグラフAPIを呼び出し、メッセージテキストをurlencode()でラップしています。
何が恋しいですか?
これは私のPHPコードです:
function POST_feeds($parameters)
{
//extract data from the post
extract($_POST);
//set POST variables
$url = 'https://graph.facebook.com/' . $parameters["facebookUserId"] . "/feed";
$fields = array(
'access_token' => $this->accessToken,
'message' => $parameters["message"]
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$facebookResponse = curl_exec($ch);
//close connection
curl_close($ch);
$response = new Response();
$response->addItem($facebookResponse);
return response;
}
アップデート
上記のPHP関数は、次のXMLHttpRequestリクエストのPOSTパラメーターからパラメーターを取得しています。
var xhr = new XMLHttpRequest();
xhr.open("POST", webServiceUrl + "feeds", true);
var params = "facebookUserId=" + facebookUserId + "&message=" + message;
print(params);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.setRequestHeader("Content-length", params.length);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
print(xhr.responseText);
var responseObject = JSON.parse(xhr.responseText);
successCallback(responseObject);
} else {
failureCallback();
}
}
};
xhr.send(params);
問題はjavascriptコードから始まっているようです(PHPコードで "'"文字を使用してメッセージをハードコーディングしようとすると、すべて正常に機能します)。
ありがとう!