Я разрабатываю приложение для iPhone, которое основано на связи с сервером, и я хочу использовать механизмы аутентификации Facebook.
В принципе, я думаю, это должно работать так:
- В моем приложении для iPhone пользователь входит в Facebook, используя свой адрес электронной почты и пароль.
- Пользователь разрешает доступ к своим данным для соответствующего приложения Facebook.
- Мое приложение для iPhone получает токен доступа после успешного входа в систему.
- В дальнейшем общении с моим сервером мое приложение iPhone должно использовать полученный токен доступа Facebook (например, в запросах).
- Когда мой сервер получает некоторый запрос из приложения iPhone с токеном доступа, он должен спросить Facebook, действителен ли этот токен (и для кого), и если да, сервер должен предположить, что пользователь аутентифицирован с помощью Facebook.
Мой вопрос: как сервер должен спрашивать Facebook, действителен ли данный токен доступа? Я думаю, мне нужно как-то проверить, действителен ли токен для моего приложения Facebook.
Я пробовал много запросов Facebook для графического API, которые я нашел, но ничего не сработало, как я ожидал. Вы можете привести мне пример?
iphone
facebook
authentication
Marcin
источник
источник
Ответы:
Вот двухэтапный процесс, который вы можете использовать для проверки принадлежности токена доступа к вашему приложению:
1) Создайте токен доступа к приложению
( https://developers.facebook.com/docs/howtos/login/login-as-app/ )
2) Отладка токена доступа пользователя
( https://developers.facebook.com/docs/howtos/login/debugging-access-tokens/ )
Где INPUT_TOKEN - это токен доступа пользователя, который вы хотите проверить, а ACCESS_TOKEN - это токен вашего приложения, который вы получили на шаге 1.
Конечная точка отладки в основном сбрасывает всю информацию о токене, поэтому она ответит примерно так:
Если этот токен не из «вашего приложения», он вернет ответ с ошибкой.
источник
Я предполагаю, что у вас уже есть токен доступа. В таком случае самый простой способ проверить токен доступа - выполнить следующий запрос
Здесь замените @accesstoken на имеющийся у вас токен доступа. Я разобью URL-адрес и объясню каждый.
Здесь мы отправляем запрос api графика, который вернет идентификатор пользователя Facebook владельца токена доступа в виде строки JSON. Ключевое слово «я» представляет вошедшего в систему пользователя или владельца токена доступа. Для этого запроса токен доступа является обязательным параметром.
Если предоставленный токен доступа недействителен или просрочен, Facebook просто вернет какое-то сообщение об ошибке.
Для действующего токена доступа результат будет как-то выглядеть так
источник
Другое решение - использовать,
https://graph.facebook.com/app/?access_token=[user_access_token]
как описано в разделе Получить идентификатор приложения из токена доступа пользователя (или проверить исходное приложение для токена) .Это похоже на недокументированную функцию, но возвращает JSON, содержащий идентификатор приложения, для которого был создан токен. Если токен не был для вашего приложения, он возвращает 400.
источник
В последней версии facebook (2.2) это можно сделать так:
Пример вывода:
источник
Вы можете скачать Facebook SDK для PHP с GitHub .
источник
Если пользователь передал вам UID Facebook, который, по их утверждению, принадлежит им, и вы хотите проверить, является ли он законным, это функция Python, которая проверит его по их токену доступа (реализация ответа Робина Джома):
источник
Это единственный безопасный метод проверки токена пользователя с помощью всего одного запроса:
Обратите внимание, что знак "|" в приведенном выше URL-адресе используется не как ИЛИ, а как разделитель и должен быть там после заполнения других полей.
Ответ будет в формате JSON следующего вида:
Ссылка: https://developers.facebook.com/docs/facebook-login/access-tokens/#apptokens (указанный выше метод упомянут в нижней части этого раздела)
источник
Наряду с токеном доступа Facebook также отправляет параметр expires_in, который является значением смещения. Используйте это, чтобы вычислить, когда истечет срок действия токена доступа как NSDate. Затем, когда вам нужно сделать запрос, сравните текущую дату с датой истечения срока действия.
Также попробуйте проверить коды состояния и строки ответа, которые Facebook отправляет обратно.
источник