Вход на сервер с помощью Facebook из собственного WebView для iOS

Я разрабатываю собственное приложение для iOS, которое использует некоторые веб-службы, предоставляемые моим внутренним сервером. Некоторым службам требуется аутентификация пользователя, и требования состоят в том, чтобы аутентификация выполнялась либо с помощью учетной записи пользователя, созданной непосредственно на сервере, либо с помощью Facebook, либо с помощью Twitter.

Чтобы упростить ситуацию, создатели внутреннего сервера решили, что сервер будет выполнять аутентификацию на стороне сервера с помощью FB или Twitter (или, конечно, использовать свой собственный механизм аутентификации, если пользователь решит войти в систему напрямую с учетной записью на server) и вернуть мне собственный токен доступа сервера после успешной аутентификации, независимо от того, за каким потоком (FB / Twitter / own) он следовал.

Итак, текущий процесс аутентификации выглядит так:

  • Я открываю веб-представление из собственного приложения iOS с URL-адресом страницы входа. На странице есть кнопки «Войти через FB» и «Войти через Twitter», а также небольшую форму пользователя / пароля для прямой аутентификации.
  • Если пользователь выбирает «Войти с помощью FB», сервер перенаправляет веб-представление на страницу аутентификации приложения FB, где пользователь должен ввести свои учетные данные FB. То же самое и с Twitter.
  • URL-адрес перенаправления FB / Twitter устанавливается непосредственно на сервер, поэтому после успешной аутентификации пользователя FB / Twitter отправляет на сервер токен доступа. Сервер создает новый сеанс пользователя, генерирует собственный токен доступа и отправляет его на URL-адрес перенаправления собственного приложения.
  • Если пользователь вводит учетные данные прямого сервера в форме, сервер Simple создает сеанс пользователя, свой токен аутентификации и отправляет его на URL-адрес перенаправления.
  • Собственное приложение наблюдает за веб-представлением через своего делегата и постоянно ищет предопределенный URL-адрес перенаправления (что-то вроде http://myserver.com/authentication_success/?authToken=xyz). Если запрос, переданный в shouldStartLoadWithRequest, соответствует этому шаблону, оно извлекает authToken и закрывает веб-представление.
  • Токен аутентификации будет передаваться каждому сервисному запросу, требующему аутентификации пользователя.

У меня вопрос: действительна ли эта архитектура и будет ли она принята Apple? Меня беспокоит то, что, поскольку в определенный момент пользователя могут попросить ввести свои учетные данные Facebook в моем веб-представлении, теоретически я мог бы получить доступ к его паролю FB через делегата. Может быть, это повод отклонить заявку?

Я нашел этот документ: https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/, в котором говорится о том, что вы, возможно, захотите использовать логин на основе браузера для "потока входа с использованием полностью серверной части". код". Можно ли применить мой случай к этому делу?


person MrTJ    schedule 25.10.2013    source источник
comment
Аналогичный / повторяющийся вопрос: stackoverflow.com/questions/4623974/   -  person Bjorn Roche    schedule 03.12.2013


Ответы (1)


Продолжение этого вопроса: я отправил в App Store приложение с архитектурой fb-login, описанной выше, и оно было принято и опубликовано.

person MrTJ    schedule 03.12.2013
comment
Привет @ MrTJ, вы сделали какой-нибудь учебник, чтобы объяснить принятое решение? Спасибо! - person Hui Wang; 20.05.2016