График Facebook API - Маркер OAuth

Я пытаюсь получить данные с помощью нового графика API, однако маркер, я - retriving от 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, все прописные буквы к и маленькие буквы случая к

access_token=000000000000|AaaAaaAaaAAaAaaaaAaaAa0aaAA.

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

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

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

Любая помощь была бы ценившим grately.


Обновление:

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

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

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

26
задан Michael Mrozek 14 August 2010 в 23:22
поделиться

7 ответов

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

000000000000%7CAaaAaaAaaAAaAaaaaAaaAa0aaAA

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

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

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

0
ответ дан 28 November 2019 в 06:55
поделиться

У меня это работает: -)

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 и проанализировать токен из ответа

16
ответ дан 28 November 2019 в 06:55
поделиться

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

$token = file_get_contents('https://graph.facebook.com/oauth/access_token?client_id=<app_id>&client_secret=<app secret>&redirect_uri=<url>&code=<code>');
2
ответ дан 28 November 2019 в 06:55
поделиться

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

Connect URL: http://www.example.com/fb/connect/

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

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

0
ответ дан 28 November 2019 в 06:55
поделиться

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

-6
ответ дан 28 November 2019 в 06:55
поделиться

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

'type' => 'client_cred',

это всего лишь способ обойти нижеприведенный вариант, однако, вышеприведенный тоже работает

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

via: by: http://developers.facebook.com/docs/api см. также: http://forum.developers.facebook.net/viewtopic.php?pid=238371

3
ответ дан 28 November 2019 в 06:55
поделиться

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

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

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

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

curl -F 'access_token=xxxxxxxxxxxxx|mGVx50lxxxxxxxxxxxxhzC2w.'  -F 'message=Hello Likers'  -F 'id=1250000000000905'  https ://graph.facebook.com/feed
6
ответ дан 28 November 2019 в 06:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: