Несколько недель назад я создал простое приложение для Facebook. Я получал информацию о пользователе через API Facebook, спрашивая разрешения у пользователей. Но на прошлой неделе он перестал работать из ничего, и с тех пор я ищу ответ.
Раньше я использовал файл_get_contents для получения информации о пользователе из Facebook API. Но я попытался изменить его на cURL после того, как он начал давать сбой, но все еще не работает. Я пытался использовать Facebook PHP-SDK, даже отлаживал код для метода makeRequest, но получаю одинаковый результат во всех методах.
Когда cURL-запрос отправляется к URL-адресу Facebook Open Graph, запрос завершается ошибкой с номером 7 или 28. Оба кода являются кодами ошибок для невозможности подключения к сайту или тайм-аута.
Мой сайт находится на виртуальном хостинге, я пробовал использовать cURL для доступа к другим сайтам, и он отлично работает. Но когда я пытаюсь получить дажеhttp://www.facebook.com, cURL возвращает FALSE.
На хостинге есть SSL-сертификат, включен cURL и т. д. Некоторое время назад все работало нормально. Я читал различные темы и сообщения об этом, пробовал много разных вариантов cURL, и ни один из них, похоже, не работает.
Есть идеи?
$auth_url = "https://www.facebook.com/dialog/oauth?client_id=". $app_id. "&redirect_uri=". urlencode($GLOBALS['canvas_page']). "&scope=publish_stream,email";
$signed_request = $_POST["signed_request"];
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);
if (empty($data["user_id"])) {
echo("");
} else {
$_SESSION['oauth_token'] = $data['oauth_token'];
$_SESSION['user_id'] = $data["user_id"];
$user = new User($_SESSION['user_id'], $_SESSION['oauth_token']);
function __construct($fid, $at) {
$this->facebook = new Facebook(array(
'appId' => "",
'secret' => "",
));
$this->fid = $fid;
$this->token = $at;
if ($data = $this->getGraph()) {
...
}
}
public function getGraph() {
$session = $this->facebook->getUser();
if ($session) {
try {
$access_token = $this->facebook->getAccessToken();
$attachment = array('access_token' => $access_token);
//$result = $this->facebook->api('/'. $this->fid, 'GET', $attachment);
$result = $this->facebook->api('/'. $this->fid, 'GET');
return $result;
} catch (FacebookApiException $e) {
return false;
}
}
}
Примечания: