API графиков Facebook – токен OAuth

Я пытаюсь получить данные, используя новый API-интерфейс, однако токен, который я извлекаю из OAuth, похоже, не работает.

Звонок, который я делаю, выглядит следующим образом.

$token = file_get_contents('https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=<app_id>&client_secret=<app secret>'); 

Это возвращает токен с длиной строки 41. Чтобы дать вам пример того, что было возвращено, я предоставил ниже образец (преобразовал все числа в 0, все заглавные буквы в «A» и буквы малых букв в «a»,

 access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA. 

Я беру этот токен доступа и присоединяю его к запросу запроса для данных, он не кажется правильным токеном, поскольку он ничего не возвращает. Я делаю вызов данных следующим образом;

 file_get_contents('https://graph.facebook.com/<my_page's_id>/statuses?access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.') 

Когда я вручную извлекаю эту страницу непосредственно через браузер, я получаю сообщение об ошибке 500 / Internal Server.

Любая помощь была бы высоко оценена.


Обновить:

С тех пор я изменил метод с file_get_contents () на завиток. Отправив заголовки, я получаю следующее сообщение об ошибке …

 {"error":{"type":"OAuthException","message":"Missing client_id"}} 

но мой массив сообщений включает «client_id» ?!

Не используйте type = client_cred, это не токен доступа, который пользователь предоставляет для вашего приложения. Для получения токена доступа типа client_cred вам не требуется redirect_uri или код или любое одобрение.

В настоящее время Facebook реализует ранний проект OAuth 2. Таким образом, пока не поддерживается «государство».

Но хорошо, что вы можете суффиктировать свое состояние на redirect_uri, важно отметить, что URL-адрес сайта, который вы указали (который является redirect_uri)

не должны иметь

вопросительный знак в конце или где-либо в том, что вы суффикс как состояние клиента, закодировано или нет. Если вы это сделаете, вы получите страшный «код проверки подлинности ошибки»,

Не используйте так

http://www.Redirect.com?

Правильный URL: http://www.Redirect.com/

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

Это работает для меня 🙂

 header('Location: https://graph.facebook.com/oauth/access_token?' . http_build_query(array( 'client_id' => FB_APP_ID, 'type' => 'client_cred', 'client_secret' => FB_SECRET, 'code' => $code))); 

Конечно, вы должны использовать file_get_contents и проанализировать токен из ответа

Я столкнулся с одной и той же проблемой, но оказалось, что проблема заключается не в кодировании параметра redirect_uri, а в том, что у меня был завершающий слэш или вопросительный знак, просто я передал два разных URL-адреса перенаправления (не прочитал спецификацию на этом время).

Redirect_uri используется только как перенаправление один раз (первый раз), чтобы перенаправить обратно к полагающейся стороне с помощью токена «код». Во второй раз redirect_uri передается обратно на сервер auth, но на этот раз он не используется, как вы ожидали (перенаправить), скорее, он используется сервером аутентификации для проверки кода. Сервер отвечает access_token.

http://tools.ietf.org/html/draft-ietf-oauth-v2-05#section-3.5.2

Вы заметите, что документация на facebook (что ужасно) говорит: «Замените его для токена доступа, извлекая https://graph.facebook.com/oauth/access_token ».

В общем, мне не нужно было кодировать или делать что-то особенное для Uri, просто переходите к тому же redirect_uri дважды, и заберите вторую страницу, чтобы получить access_token внутри.

Вы можете запросить токен доступа через терминал (пользователи OSX) с помощью curl:

 curl -F type=client_cred -F client_id=xxxxxxxxxxxxxxx -F client_secret=c0f88xxxxxxxxxxxxxxxxxx1b949d1b8 https://graph.facebook.com/oauth/access_token 

После того, как у вас есть токен доступа, вы можете использовать его в будущих запросах curl для внесения изменений через новый API-интерфейс графика:

Отправьте сообщение идентификатору профиля:

 curl -F 'access_token=xxxxxxxxxxxxx|mGVx50lxxxxxxxxxxxxhzC2w.' -F 'message=Hello Likers' -F 'id=1250000000000905' https ://graph.facebook.com/feed 

Обратите внимание, что

'type' => 'client_cred',

это только способ обойти ниже, сказав, что вышеупомянутое также работает

После того, как пользователь авторизует ваше приложение, мы перенаправляем пользователя обратно на URI перенаправления, который вы указали с помощью строки подтверждения в коде аргумента, которую можно обменять на токен доступа oauth. Замените его для токена доступа, извлекая https://graph.facebook.com/oauth/access_token . Передайте то же самое redirect_uri, что и на предыдущем шаге:

через: http://developers.facebook.com/docs/api Смотри также: http://forum.developers.facebook.net/viewtopic.php?pid=238371

Попытайтесь следовать API, то есть без type но добавьте redirect_uri и code (хотя это нам не нужно):

 $token = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id=<app_id>&client_secret=<app secret>&redirect_uri=<url>&code=<code>'); 

Возможно, ваша проблема решена, но я пока не нашел приемлемого ответа от вас, и, возможно, этот ответ помогает тем, кто сталкивается с подобной проблемой

Сначала мы должны создать экземпляр нашего приложения.

 $facebook = new Facebook(array( 'appId' => '149865361795547', 'secret' => 'ee827a8df6202e1857b3fc28f3185a61', 'cookie' => true, )); 

простой способ получить access_token

 $token = $facebook->getAccessToken(); 

получить статус страницы, как вы задаете в своем вопросе

 $response = $facebook->api($pageID . '/feed','get',$token); 

благодаря..

Удостоверьтесь, что URL-адрес вашего URL-адреса закодирован для ваших параметров запроса, и на самом деле вы должны:

 000000000000%7CAaaAaaAaaAAaAaaaaAaaAa0aaAA 

Примечание: также требуется параметр типа, без него вы также получите сообщение об ошибке 500:

 { "error": { "type": "OAuthException", "message": "Error validating verification code." } } 

а не сообщение, которое вы получаете с другими отсутствующими параметрами. Не могу видеть, что указано в документации .

Вы также можете получить эту ошибку, если ваш URL-адрес подключения не является базой вашего URI перенаправления. Например

 Connect URL: http://www.example.com/fb/connect/ Redirect URI: http://www.example.com/fb/connect/redirect 

Я столкнулся с проблемой, когда мой URL-адрес перенаправления был таким же, как и URL-адрес подключения, но я забыл трейлинг / на URI переадресации, чтобы FB считал их разными и не выполнял авторизацию.

Извините за размещение в старом вопросе. Из-за изменений в последнем доступе fb. У меня этот код работает, и я думал, что я отправлю кому-то еще, кому нужна помощь. Этот метод отлично работает с jQuery ajax и исключает приведенный пример redirect_uri из facebook.

 $ch = curl_init("https://graph.facebook.com/oauth/access_token?client_id=INSERT_YOUR_APP_ID_HERE&client_secret=INSERT_YOUR_APP_SECRET_HERE&grant_type=client_credentials"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_NOSIGNAL, 1); curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000); $data = curl_exec($ch); $curl_errno = curl_errno($ch); $curl_error = curl_error($ch); curl_close($ch); if ($curl_errno > 0) { echo "cURL Error ($curl_errno): $curl_error\n"; } else { echo $data; } 

выводит общедоступный доступ к ресурсу access_token для показа пользователям, не являющимся пользователями. т.е. стену подачи страницы facebook через график api для веб-сайтов. access_token = 191648007534048 | eVilnMh585rlQLZLvBAmqM6s-1g

php facebook oauth2 facebook-accesstoken facebook-oauth

вам нужно ввести фактические значения вместо <app_id> и секретное значение. код является уникальным значением, которое необходимо создать, и указанный URL-адрес перенаправления будет проверять правильность кода.