Как получить токен доступа к приложению через PHP SDK Facebook?

Я пытаюсь получить токен доступа к своему приложению, чтобы публиковать уведомления, но по какой-то причине это не работает. Вот код:

$AppParams = array(
    'client_id'     => 'myclientid',
    '&client_secret' => 'myclientsecret',
    '&grant_type'    =>'client_credentials'
    );
$AppToken = $facebook->api('oauth/access_token?', 'GET', $AppParams);

Я также заменил первую часть полной ссылкой oauth/accesstoken, но затем она возвращает мне общую информацию об oauth и их странице в facebook, чего я не хочу. Я сделал почти то же самое на С#, и там это работает.


person Boehmi    schedule 10.09.2013    source источник
comment
Проблема, скорее всего, в символах амперсанда в ключах вашего массива. Они вам не нужны. SDK обрабатывает создание URL-адреса и добавление параметров.   -  person Lix    schedule 10.09.2013


Ответы (3)


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

Маркер доступа к приложению имеет следующий формат:

app_id|app_secret

Это идентификатор приложения, символ вертикальной черты | и секрет приложения.

Убедитесь, что этот токен приложения недоступен для ваших пользователей! Используйте и ссылайтесь на него только на стороне сервера — никогда не передавайте его клиенту. Для получения дополнительной информации ознакомьтесь с последними несколькими предложениями в соответствующей документации.

person Lix    schedule 10.09.2013
comment
Еще раз привет @Assaf: P Этот метод действительно работает - я только что еще раз проверил его с помощью инструмента отладчика Facebook. Возможно, есть еще одна проблема с вашим запросом. Я предлагаю вам попробовать этот метод вручную, используя инструмент отладчика. Просто поместите туда свой app_id|app_secret, и вы должны получить некоторую информацию о своем приложении. - person Lix; 07.10.2015
comment
@AssafShomer Используете ли вы один из официальных SDK Facebook или делаете эти запросы вручную? - person Lix; 07.10.2015
comment
Спасибо, мужик. Работает отлично. Именно то, что я искал. Подходит для запросов общедоступного контента, таких как публичные события, без необходимости входа пользователя в приложение. - person Everton Z. P.; 29.05.2016

В версии 5 SDK вы можете получить токен доступа с помощью метода accessToken() для FacebookApp экземпляр. Если у вас есть экземпляр Facebook (как обычно), вы можете получить вот так:

$fb->getApp()->getAccessToken()

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

$fb = new \Facebook\Facebook([
    'default_graph_version' => 'v2.8',
]);
$fb->setDefaultAccessToken($fb->getApp()->getAccessToken());
person tremby    schedule 13.04.2017

Заменять -

'&client_secret' => 'client_secret'

'&grant_type' => 'grant_type'
person Sahil Mittal    schedule 10.09.2013