Вход в соцсети через iOS

Я пишу приложение для iPhone, которое работает против моего собственного сервера.

По сути, это форум, где пользователи могут оставлять сообщения. Я не хочу, чтобы пользователи входили в учетную запись на моем сервере, но я предпочитаю, чтобы они входили в систему, используя любую существующую учетную запись, которая у них есть: Facebook, Linkedin, Foursquare и т. д. Поэтому из самого приложения я хочу, чтобы они могли войти в систему, используя свою существующую учетную запись, которая затем позволит им публиковать сообщения на форуме.

Мой вопрос заключается в следующем: когда пользователь публикует сообщение, как я могу проверить, вошел ли он в систему с какой-либо службой? Мне нужно проверить его как на стороне клиента, так и на стороне сервера. Я планирую написать серверную часть с использованием PHP.

Спасибо


person Gilad Novik    schedule 09.07.2011    source источник


Ответы (3)


См. этот вопрос для аналогичного обсуждения (только для входа в Facebook). Вот общий обзор того, что должно произойти (взято из обсуждения, на которое я ссылался):

  1. Пользователь открывает приложение на телефоне. Выбирает службу для аутентификации.
  2. Аутентифицируется через один из доступных сервисов (Facebook, Twitter, Foursquare и т. д.) и получает специальные access token.
  3. Ваше приложение берет токен и отправляет его на ваш сервер.
  4. Ваш сервер получает токен и проверяет его. Он сверяет его с API сервиса и (по крайней мере, для Facebook и Twitter) получает соответствующий идентификатор пользователя.
  5. Предполагая действительный идентификатор, ваш сервер проверяет, не использовался ли уже идентификатор пользователя каким-либо пользователем. Если это так, он регистрирует их. Если идентификатор пользователя не был создан, ваш сервер создает свою собственную запись пользователя, связанную с этим идентификатором пользователя, и регистрирует пользователя. В любом случае пользователь в конечном итоге входит в систему, и ваш сервер session key в ваше приложение.
  6. session key используется для всей дальнейшей связи между вашим приложением и вашим сервером, пока пользователь не выйдет из системы.

На телефоне вам понадобится некоторая библиотека OAuth, позволяющая пользователям аутентифицироваться с помощью другого сервиса. Вы, вероятно, захотите использовать Facebook iOS SDK, чтобы разрешить им использовать Facebook и используйте одну из предложенных здесь библиотек OAuth для других ваших служб проверки подлинности. Я использовал только SDK Facebook, поэтому не могу говорить об общих библиотеках OAuth.

После входа в систему телефон не должен хранить access token, только session key.

Предполагая, что пользователи могут использовать более одной службы для доступа к своей учетной записи, вам также понадобится какой-либо способ подключения двух служб к одному и тому же пользователю (возможно, по адресу электронной почты).

Вам решать, как ваше приложение и ваш сервер взаимодействуют. Я бы выбрал JSON + REST API для связи с сервером.

person cbrauchli    schedule 12.09.2011
comment
Именно такую ​​идею я и имел в виду, но не был уверен, нужно ли мне также создавать запись на моем сайте. Спасибо! - person Gilad Novik; 13.09.2011

Еще один способ заставить ваших пользователей входить в систему с помощью нескольких сервисов — Socialize (www.getsocialize.com). Это SDK с открытым исходным кодом, который управляет вашими пользователями и аутентификацией, поэтому вам не нужно выполнять все шаги, описанные cbrauchli выше.

person Isaac A Mosquera    schedule 26.02.2012

Я изучал, существуют ли лучшие/простые в использовании/реализации варианты в 2020 году, используя сторонние библиотеки, позволяющие входить в систему с учетными записями социальных сетей. И нашел два варианта:

  1. AuthorizeMe — https://github.com/rubygarage/authorize-me и https://rubygarage.org/blog/authorizeme-ios-libary
  2. Auth0 — https://auth0.com/learn/social-login/ и https://auth0.com/blog/using-centralized-login-to-add-authentication-to-your-ios-apps/

AuthorizeMe поддерживает:

  1. Facebook
  2. Твиттер
  3. Google
  4. Instagram
  5. LinkedIn

плюс пользовательские провайдеры

Auth0 поддерживает:

  1. Facebook
  2. Твиттер
  3. Google
  4. Майкрософт (Windows Live)
  5. Yahoo
  6. Instagram
  7. Амазонка
  8. LinkedIn
  9. Github
  10. PayPal
  11. вКонтакте
  12. Яндекс
  13. Коробка
  14. Байду
  15. Рен Рен (Сяонэй)
  16. Weibo
  17. Shopify
  18. Вордпресс
  19. Yammer
  20. SoundCloud

и пользовательские провайдеры, а также

Отказ от ответственности: я не связан с Auth0 или AuthorizeMe.

person computingfreak    schedule 26.07.2020