Не удается подключиться к Facebook с помощью curl-запроса.

Несколько недель назад я создал простое приложение для 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, и ни один из них, похоже, не работает.

Есть идеи?

index.php

$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;
        }
    }
}

Примечания:

  • После проверки методов Facebook PHP SDK я понял, что мне не нужно отправлять токен доступа, так как он установит его, если токен доступа не в параметрах $.
  • Он переходит к методу makeRequest()в SDK и возвращает false из curl_exec.

6
задан retri 11 April 2012 в 09:00
поделиться