我正在编写一个将消息发布到提要中的 facebook 应用程序。当我尝试使用带有 HTTP POST 的图形 API 将消息“I'm Roy”发布到我的提要时,我不断收到以下结果“I\'m Roy”。这是为什么?我正在使用 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 代码中使用“'”字符对某些消息进行硬编码时,它一切正常)。
谢谢!