Маркеры доступа при входе через Facebook для браузера

В конце процесса доступа генерируется маркер доступа. Это объект, который передается с каждым вызовом API в качестве подтверждения того, что вызов был выполнен определенным человеком из определенного приложения.

Facebook SDK for JavaScript обрабатывает хранение маркера доступа и отслеживание статуса входа в браузере автоматически, поэтому для хранения маркеров доступа в браузере вам не требуется ничего делать.

Однако стандартная схема действий сводится к получению маркера доступа и его передаче обратно на сервер, после чего сервер выполняет вызовы от имени соответствующего человека. Для получения маркера из браузера можно использовать объект response, который возвращает FB.getLoginStatus():

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    console.log(response.authResponse.accessToken);
  }
});

Этот маркер представляет собой неструктурированную строку переменной длины.

Помните, что маркеры доступа, генерируемые в браузере, обычно действуют не более двух часов. SDK для JavaScript обновляет их автоматически. Если вы выполняете вызовы с сервера, вам потребуется сгенерировать долгосрочный маркер, который подробно рассматривается в нашей документации по маркерам доступа.

Повторная проверка маркеров доступа

Как правило, приложениям нужно подтвердить, что ответ из окна входа поступает от того же человека, который инициировал запуск этого окна. Если вы используете Facebook SDK for JavaScript, он автоматически производит эти проверки, поэтому от вас ничего не требуется (предполагается, что вы выполняете вызовы только из браузера).

Если вы отправляете маркер доступа на сервер, вы должны предусмотреть его повторную проверку после поступления на сервер. Повторная проверка маркера рассматривается в нашей документации по созданию процесса входа вручную. Вам нужно будет убедиться, что app_id и user_id соответствуют значениям, которых вы ожидаете от конечной точки отладки маркера доступа.

Выполнение вызовов API

На этом этапе процесса пользователь прошел аутентификацию и вошел в приложение. Ваше приложение готово выполнять вызовы API от его имени через браузер. В браузере это проще всего сделать с помощью FB.api(). FB.api() автоматически добавляет маркер доступа в вызов.

Код:

FB.api('/me', function(response) {
    console.log(JSON.stringify(response));
});

Он возвращает массив с ID и именем:

{
  "id":"101540562372987329832845483",
  "name":"Bob Smith"
}

Если вы выполняете вызовы с маркером доступа на стороне сервера, можно выполнять аналогичные вызовы, используя SDK на сервере. Многие разработчики создают веб-приложения на языке PHP. Примеры вызовов API со стороны сервера можно найти в нашей документации по SDK для PHP.

Обнаружение удаления приложений пользователями

Люди могут удалять приложения через Facebook.com без непосредственного взаимодействия с приложением. Чтобы отслеживать такие операции, приложения могут предоставлять URL обратного вызова для отмены авторизации, который вызывается при наступлении такого события.

Включить обратный вызов для отмены авторизации можно в панели приложений.