#php #json #facebook #facebook-graph-api #file-get-contents
#php #json #Facebook #facebook-graph-api #file-get-contents
Вопрос:
Я использую facebook graph api, чтобы получить информацию о вошедшем в систему пользователе.
$facebookdata = json_decode(file_get_contents('https://graph.facebook.com/me?access_token=' . $fb_accesstoken . 'amp;fields=name,picture'),true);
Теперь, когда я var_dump, я получаю null. Я пытался перейти по url https://graph.facebook.com/me?access_token=ACCESS_TOKENamp;fields=id ,имя, картинка. Он показывает имя и photourl.
Я ценю любую помощь.
Комментарии:
1. сначала попробуйте
var_dump
безjson_decode
и посмотрите результат. «отладьте» свою программу!2. @ahmet Я тоже пробовал, он показывает bool (false). Пожалуйста, помогите
3. это означает, что проблема в том, что он не работает. попробуйте получить какую-нибудь другую страницу (например, эту страницу), продолжайте отладку.
Ответ №1:
Вместо использования 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 (хорошо документирован), если хотите увидеть процесс получения токена доступа пользователя.
Надеюсь, это поможет!
Ответ №2:
Проверьте, allow_url_fopen
включен ли он в вашем php.ini
. В противном случае адаптируйтесь, потому что file_get_contents тогда не сможет считывать HTTP-адреса.
Во-вторых, повысьте свой error_reporting
уровень. Он должен был вам это сказать.
Если вы не получаете сообщения об ошибке, то доступ с помощью PHP user_agent
может быть заблокирован. Для этого есть другая настройка php.ini. Также, в качестве альтернативы, просто попробуйте curl
.
Комментарии:
1. Я попытался использовать file_get_contents с другими URL-адресами, это работает нормально. разрешен режим allow_url_fopen. Я ценю вашу помощь.
2. Также с URL-адресами https? И каков ваш текущий уровень ошибок сейчас? Что
$http_response_header
говорит?
Ответ №3:
Вы должны определить, какой код http-ответа возвращается на ваш запрос.
Я обнаружил, что file_get_contents() работает только тогда, когда http-ответ равен 200, нормально.
Он не возвращает строку, если код ответа равен 404 (страница не найдена), 400 (неверный запрос) и т.д.
Неправильный доступ к Facebook API с помощью 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
Ответ №4:
//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 . 'amp;fields=name,picture';
$facebookdata = json_decode(get_myurl_data($url));