Если вам нужна справка по Facebook Portal, посетите Справочный центр Portal.
Ввести код Facebook для устройств для входа в Smart TV, камеру, принтер или другие устройства можно на этой странице.
Интегрируйте вход через Facebook для устройств, чтобы люди могли войти в ваше приложение или сервис через свой аккаунт Facebook. Поддерживаются устройства с ограниченными возможностями для отображения или ввода данных, например Smart TV, цифровые фоторамки и устройства Интернета вещей.
При входе с устройства на экране появится буквенно-цифровой код, который пользователь должен будет ввести со своего ПК или смартфона на определенной веб-странице. Затем у пользователя приложения или службы запрашиваются разрешения. Как только приложение получит разрешения, устройству будет передан маркер доступа. Он будет использоваться в запросах API Graph для идентификации пользователя и получения информации, которая поможет сделать работу с приложением более удобной для этого человека.
Если вы разрабатываете приложение для Apple TV, Android TV или Fire TV, необходимо использовать Facebook SDK для tvOS или Facebook SDK для Android.
В данном руководстве описывается интеграция входа для устройства вручную без использования этих SDK.
В этом руководстве показано, как разработать ясный, безопасный и согласованный процесс входа для всех устройств и служб.
Прежде всего, решите, когда именно в процессе работы с приложением вы предложите людям выполнить вход или подключиться через Facebook. На некоторых устройствах это нужно делать сразу, на других запрос входа можно отложить.
Чтобы обеспечить удобную, согласованную и надежную работу с приложением, создайте кнопку, максимально похожую на оригинальную кнопку "Вход через Facebook".
Это означает следующее:
Если это уместно, расскажите о преимуществах входа. Например, вы можете указать, что, выполнив вход, человек сможет узнать, чем занимаются его друзья, или просматривать фото из альбомов Facebook.
При нажатии призыва к действию устройство отправляет вызов API Facebook, который в ответ возвращает код.
Вы должны уведомить человека о том, что ему нужно перейти на определенный веб-сайт и ввести код. Используйте для этого следующее сообщение: «Откройте страницу facebook.com/device (http://facebook.com/device) с вашего устройства или телефона и введите этот код». Покажите код, полученный от API Device Login Facebook, полностью. Код состоит из 6–12 символов.
Рядом можно разместить кнопку Close
или Cancel
, позволяющую отменить вход для устройства. В этом случае нужно вернуть человека к начальному экрану входа.
Когда на экране отображается код, ваше устройство опрашивает API Device Login, чтобы узнать, авторизовался ли пользователь в приложении. Если код не ввести в течение нескольких минут, API Device Login вернет ошибку code_expired
. Получив ее, устройство должно отменить процесс входа и вновь вывести на экран призыв к действию.
Можно также генерировать QR-коды с кодом пользователя в URL. Для этого в URL нужно добавить параметр user_code
:
https://www.facebook.com/device?user_code=<USER_CODE>
Это то, что люди видят в браузере компьютера или мобильного устройства при переходе на страницу facebook.com/device. Сначала отображается текстовое поле, в которое нужно ввести код.
После ввода кода и нажатия кнопки Continue
человек может выбрать разрешения, которые он готов предоставить приложению:
Если вход выполнен успешно, появится подтверждающее сообщение:
В интерфейсе устройства должно отображаться сообщение с подтверждением. В идеале оно должно включать имя пользователя и фото его профиля Facebook, если оно доступно.
Подтверждение должно отображаться на экране устройства, пока человек не нажмет кнопку Continue
. Иногда человек вводит код с компьютера, расположенного в другом месте, и ему требуется время, чтобы вернуться к своему устройству и увидеть подтверждение, прежде чем продолжить работу.
После нажатия кнопки Continue
на вашем устройстве должна создаваться персональная, удобная для пользователя рабочая среда.
Люди должны иметь возможность выйти с вашего устройства, после чего данные о подключении к Facebook должны быть удалены. Для этого предусмотрите в меню устройства пункт Log out from Facebook
или Disconnect from Facebook
.
Если человек выберет этот пункт, устройство должно удалить из своей памяти сохраненный маркер доступа. Необходимо также удалить и маркер доступа, хранящийся в базе данных или в облачном хранилище, если он есть. Чтобы аннулировать маркер доступа, вызов API не требуется.
После выхода из приложения устройство должно снова вывести на экран призыв к действию из Шага 1.
«Вход через Facebook» предназначен для устройств, отправляющих прямые запросы HTTP через Интернет. Ниже показаны вызовы API и отклики, доступные для устройства.
Откройте Панель приложений и установите для параметра "Вход с устройств" (раздел "Продукт" > "Вход через Facebook" > "Настройки") значение "Да".
Если пользователь нажимает призыв к действию Connect to Facebook
или Log in with Facebook
, устройство должно отправить запрос HTTP POST:
POST https://graph.facebook.com/v2.6/device/login access_token=<YOUR_APP_ID|CLIENT_TOKEN> scope=<COMMA_SEPARATED_PERMISSION_NAMES> // e.g. public_profile,user_likes redirect_uri=<VALID_OAUTH_REDIRECT_URL>
Параметр scope
необязателен и должен содержать разделенный запятыми список разрешений входа, одобренных к использованию по результатам Проверки входа.
Чтобы найти CLIENT_TOKEN
, откройте "Настройки приложения" -> "Дополнительно". Этот маркер нужно объединить с ID приложения (разделив символом |
) и сформировать таким образом access_token
.
redirect_uri
— необязательный параметр. Если вы указываете URL, человек перенаправляется на него после успешного входа. Это позволяет человеку войти на веб-сайт вашего приложения, и вы сможете управлять его аккаунтом. Этот URL должен быть действительным URL перенаправления OAuth, как настроено в разделе «Настройки приложения -> Дополнительно». Ответ выглядит так:
{ "code": "92a2b2e351f2b0b3503b2de251132f47", "user_code": "A1NWZ9", "verification_uri": "https://www.facebook.com/device", "expires_in": 420, "interval": 5 }
Этот ответ означает следующее:
Ваше устройство должно показать user_code
и предложить человеку открыть на своем компьютере или смартфоне указанный verification_uri
, например facebook.com/device. См. раздел Пользовательский интерфейс.
Чтобы узнать о состоянии авторизации, ваше устройство должно опрашивать API Device Login. Это необходимо делать с интервалом, который определяется значением interval
в отклике на вызов, отправленный на шаге 1. Он составляет 5 секунд. Опрос выглядит так:
POST https://graph.facebook.com/v2.6/device/login_status access_token=<YOUR_APP_ID|CLIENT_TOKEN> code=<LONG_CODE_FROM_STEP_1> // e.g. "92a2b2e351f2b0b3503b2de251132f47"
Ответ на этот вызов API зависит от того, на каком этапе получения разрешения находится пользователь. Вы получите маркер доступа или объект ошибки с определенным подкодом для анализа:
Подкод ошибки | Пример отклика | Значение |
---|---|---|
|
| Пользователь успешно авторизовался на устройстве. Устройство теперь может использовать значение |
|
| Пользователь ещё не авторизован в приложении. Продолжайте опрос (его частота определяется откликом с шага 1). |
|
| Устройство проводит опрос слишком часто. Увеличьте интервал опроса согласно значению, указанному в первом вызове API. |
|
| Срок действия кода устройства истек. Отмените процесс входа с устройства и верните пользователя в начальное окно. |
Получение маркера доступа означает, что человек успешно авторизован в приложении. Этот маркер необходимо сохранить на устройстве.
Чтобы подтвердить успешный вход, до нажатия кнопки Continue
приложение должно показывать на устройстве имя и фото профиля человека (если оно доступно). Чтобы получить имя и фото профиля, устройство должно отправить стандартный вызов API Graph:
GET https://graph.facebook.com/v2.3/me? fields=name,picture& access_token=<USER_ACCESS_TOKEN>
Ответ будет выглядеть так:
{ "name": "John Doe", "picture": { "data": { "is_silhouette": false, "url": "https://fbcdn.akamaihd.net/hmac...ile.jpg" } }, "id": "2023462875238472" }
Имя и фото профиля человека должны отображаться, пока он не нажмет кнопку Continue
на устройстве.
Ваше устройство должно сохранять маркер доступа, чтобы использовать его в запросах к API Graph.
Маркеры доступа для входа с устройства действуют до 60 дней, но в некоторых случаях они могут быть аннулированы. Например, если пароль Facebook изменяется, маркер доступа становится недействительным.
Если маркер недействителен, ваше устройство должно удалить его из памяти. Чтобы получить новый, действующий маркер, человек, использующий ваше устройство, должен снова выполнить вход с устройства, начиная с Шага 1.
Можно ли выполнять запросы к устройству через HTTP?
Для OAuth 2 необходим протокол TLS/HTTPS.
Можно ли выполнять запросы к устройству с помощью метода GET?
К устройствам необходимо отправлять запросы POST
.
Как обновить маркер доступа для входа для устройства?
Маркеры доступа для входа для устройства действуют до 60 дней.
Если маркер недействителен, ваше устройство должно удалить его из памяти. Чтобы получить новый, действительный маркер, человек, использующий ваше устройство, должен вновь выполнить вход для устройства, начиная с шага 1.
Подробнее об обновлении маркеров см. в разделе Маркеры доступа.
При отправке запроса POST выдается ошибка Invalid API method
. В чем дело?
При отправке запроса POST выдается ошибка:
{"error":{"message":"Invalid API method","type":"OAuthException","code":3}}
Скорее всего, в приложении нужно активировать вход с устройств.
Откройте Панель приложений и установите для параметра "Вход с устройств" (раздел "Продукт" > "Вход через Facebook" > "Настройки") значение "Да".
Мой маркер доступа для входа для устройства недействителен. Что делать?
Если маркер недействителен, ваше устройство должно удалить его из памяти и получить новый. Чтобы получить новый, действительный маркер, человек, использующий ваше устройство, должен вновь выполнить вход для устройства, начиная с шага 1.