Невозможно, чтобы file_get_contents работал - PullRequest
0 голосов
/ 28 мая 2011

Я использую Facebook Graph API, чтобы получить информацию о зарегистрированном пользователе.

$facebookdata = json_decode(file_get_contents('https://graph.facebook.com/me?access_token=' . $fb_accesstoken . '&fields=name,picture'),true);

Сейчас, когда я var_dump , я получаю ноль.Я пытался перейти на URL https://graph.facebook.com/me?access_token=ACCESS_TOKEN&fields=id,name,picture. Он показывает имя и фото.

Я ценю любую помощь.

Ответы [ 4 ]

2 голосов
/ 28 мая 2011

Вместо использования file_get_contents вы можете использовать Facebook PHP SDK ( см. На github ), который проще в использовании:

require "facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET,
));

$facebook->setAccessToken("...");

$args['fields'] = "name,picture";
$facebookdata = $facebook->api('/me', $args);

Проверьте пример SDK (хорошо документировано), если вы хотите увидеть поток для получения токена доступа пользователя.

Надеюсь, это поможет!

1 голос
/ 28 мая 2011

Проверьте, включен ли allow_url_fopen в вашем php.ini. В противном случае выполните адаптацию, поскольку file_get_contents не сможет читать с http URL-адресов.

Во-вторых, поднимите свой уровень error_reporting. Это должно было сказать тебе так.

Если вы не получите сообщение об ошибке, доступ к PHP user_agent может быть заблокирован. Для этого есть другая настройка php.ini. Также альтернативно, просто попробуйте curl.

0 голосов
/ 29 сентября 2013
 //i had the same problem before.for some reason the server has a problem with file_get_contents and i used this function.try it instead
 /* gets the data from a URL */
 function get_myurl_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
 }
 $url = 'https://graph.facebook.com/me?access_token=' . $fb_accesstoken . '&fields=name,picture';
 $facebookdata = json_decode(get_myurl_data($url));
0 голосов
/ 26 декабря 2012

Вы должны определить, какой код ответа HTTP возвращается по вашему запросу.

Я обнаружил, что file_get_contents () работает только тогда, когда HTTP-ответ равен 200, ОК.

Не возвращает строку, если код ответа 404 (страница не найдена), 400 (неверный запрос) и т. Д.

Попадание в API Facebook с неверным access_token возвращает 400.

Пример:

file_get_contents () с 'http://www.google.co.uk' работает, HTTP-ответ от Google - 200

file_get_contents () с 'http://www.google.co.uk/me' равно нулю, http-ответ от Google - 404

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...