Я заметил, что Facebook, похоже, поддерживает Device Login с токеном / PIN-кодом вместо user/login для использования на таких устройствах, как телевизор или консоль:
https://www.facebook.com/device
В поиске на странице dev я вижу, что была статья, связанная с этим, но по крайней мере в Германии она выдает 404.
У кого-нибудь есть больше информации об этом?
Спасибо
Я тоже искал это, но, к сожалению, facebook device auth все еще находится на экспериментальной стадии, и они не дали новых ключей (партнерских) для использования device auth.
Вы можете найти рабочий пример здесь: http://oauth-device-demo.appspot.com/ Просто посмотрите на источник сайта и вы сможете получить appID, который работает с ним.
Другой пример - twitter PIN oauth, он работает и находится в открытом доступе (я использую его) https://dev.twitter.com/docs/auth/pin-based-authorization
Вход в Facebook для smarttv/устройств без facebook sdk возможен через код, смотрите документацию здесь:
https://developers.facebook.com/docs/facebook-login/for-devices
Facebook Login for Devices предназначен для устройств, которые напрямую выполняют HTTP-вызовы через интернет. Ниже перечислены вызовы API и ответы, которые может выполнять ваше устройство.
1. Включить вход для устройств
Измените Settings > Advanced > OAuth Settings > Login from Devices на 'Yes'.
2. Сгенерируйте код, который необходим для идентификации устройства facebook.
Когда человек нажмет кнопку Log in with Facebook, ваше устройство должно выполнить HTTP POST на:
POST https://graph.facebook.com/oauth/device?
type=device_code
&client_id=<YOUR_APP_ID>
&scope=<COMMA_SEPARATED_PERMISSION_NAMES> // e.g.public_profile,user_likes
Ответ приходит в таком виде:
{
"code": "92a2b2e351f2b0b3503b2de251132f47",
"user_code": "A1NWZ9",
"verification_uri": "https://www.facebook.com/device",
"expires_in": 420,
"interval": 5
}
Этот ответ означает:
3. Отображение кода
Ваше устройство должно отображать код_пользователя и говорить людям, чтобы они посетили verification_uri, например facebook.com/device на своем ПК или смартфоне. См. Руководство по дизайну.
4. Опрос для авторизации
Ваше устройство должно опросить API Device Login, чтобы узнать, успешно ли человек авторизовался в вашем приложении. Вы должны делать это с интервалом, указанным в ответе на ваш вызов в Шаге 1, то есть каждые 5 секунд. Ваше устройство должно опросить:
POST https://graph.facebook.com/oauth/device?
type=device_token
&client_id=<YOUR_APP_ID>
&code=<LONG_CODE_FROM_STEP_1> //e.g."92a2b2e351f2b0b3503b2de251132f47"
Вы получите HTTP-код 200, т.е. пользователь успешно авторизировал устройство. Теперь устройство может использовать значение access_token для выполнения аутентифицированных вызовов API.
5. Подтверждение успешного входа
Ваше устройство должно отображать имя пользователя и, если доступно, изображение профиля, пока пользователь не нажмет кнопку "Продолжить". Чтобы получить имя и фотографию профиля человека, устройство должно выполнить стандартный вызов Graph API:
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"
}
6. Хранить маркеры доступа
Ваше устройство должно сохранять маркер доступа, чтобы выполнять другие запросы к Graph API.
Токены доступа Device Login могут быть действительны в течение 60 дней, но могут быть аннулированы в различных сценариях. Например, когда человек меняет свой пароль в Facebook, его маркер доступа становится недействительным.
Если маркер недействителен, ваше устройство должно удалить его из своей памяти. Человек, использующий ваше устройство, должен снова выполнить поток Device Login, начиная с шага 1, чтобы получить новый, действительный маркер.