У меня есть веб-сайт, который использует аутентификацию Facebook для входа в систему.Он использует серверный поток oAuth 2.0 для аутентификации и все работает нормально.
Сейчас я занимаюсь разработкой приложения для iPhone для того же сайта и хочу, чтобы пользователи могли входить на сайт через приложение iPhone с помощью FBАутентификация. Facebook iOS SDK предоставляет механизмы для выполнения аутентификации с использованием потока на стороне клиента, где в моем iPhone приложение получает токен доступа.
Теперь, чтобы аутентифицировать пользователя на моем сервере, а также сделать токен доступа доступным для моего сервера, я подумал о том, чтобы отправить этот токен доступа на мой сервер (через https) и аутентифицировать пользователя по моей БДи установить мой собственный cookie, связанный с сеансом.Это предпочтительный или рекомендуемый метод?Мне нужен токен доступа на моем сервере, так как я запрашиваю разрешение на автономный доступ и мое веб-приложение взаимодействует с учетной записью пользователя FB напрямую с моего сервера.
Для меня более простым вариантом будет просто использовать поток на стороне сервера дляаутентификация в моем приложении для iPhone, так как ничего нового не нужно делать, а код на стороне сервера одинаков для веб-сайта или приложения для iPhone.Это возможно?
Я не могу использовать аутентификацию на стороне клиента и передать токен доступа на мой сервер для аутентификации на моей системе, а также для сохранения для дальнейшего использования.Маркер доступа, полученный для аутентификации на стороне клиента, полностью отличается от токена аутентификации на стороне сервера, и эти два не могут использоваться взаимозаменяемо.Мне придется использовать аутентификацию на стороне сервера.
Одно из решений (, приведенное здесь - в первом комментарии к вопросу) - использовать UIWebView и моделировать поток на стороне сервера.В следующем комментарии упоминаются проблемы с этим подходом, которые мне не удалось решить.
Эта проблема была решена путем изучения URL-адреса, на который веб-представление перенаправляется после входа в систему.
Другая проблема заключается в том, что мое приложение для iPhone также выполняет некоторые взаимодействия на стороне клиента (например,FBShare, писать на стене друга и т. Д.).Если я использую смоделированную аутентификацию на стороне сервера, мне придется выполнить другую аутентификацию на стороне клиента для этих взаимодействий или принять болезненный подход и направить даже эти действия через мой сервер.Последнее определенно не является предпочтительным.Как мне это сделать?Можно ли избежать двойного входа в систему, так как это будет очень плохо для пользователя?