Мета: Дозволити користувачеві пройти автентифікацію з Facebook в додатку iOS, який вимагає доступу до захищеної веб-служби, яку я запускаю.
Припущення: Для тих користувачів, які вирішили не використовувати Facebook для входу, існує система нативного аутентифікації (та реєстрації).
Деталі:
- Припустимо, ми хочемо запропонувати користувачеві можливість входити через Facebook без створення окремого облікового запису / облікових даних для нашої системи.
- Оскільки ми підтримуємо власний власний механізм аутентифікації (ім’я користувача та пароль), ми маємо власні ідентифікатори користувачів та видаємо маркер автентифікації, який використовується для наступних взаємодій після первинної перевірки облікових даних.
Я здивований, що Facebook не має кращих практик для цього в документації для розробників. Вся існуюча документація або передбачає, що ви будуєте FB auth на веб-сайті, або окремий мобільний додаток без сервісу, який не потребує автентифікації.
Ось мої початкові думки щодо того, як це було б розроблено, але хочу перевірити, чи правильно це.
- Клієнт вискакує логін Facebook iOS
- Користувач інтерфейсу користувач входить за допомогою облікових даних Facebook та отримує маркер доступу
- Додаток iOS передає маркер доступу на наш сервер
Наш сервер спілкується з API API графіки FB, використовуючи маркер доступу, щоб (a) перевірити маркер і (b) отримати ідентифікатор користувача FB для цього маркера доступу.
наприклад, наш сервер зателефонував би на https://graph.facebook.com/me/?access_token=XYZ, який би повертав інформацію про профіль в об’єкт JSON
Припустимо, що він дійсний, наш сервер витягує ідентифікатор користувача з об’єкта JSON і перевіряє, чи є у користувача вже обліковий запис. Якщо так, ми видаємо клієнту власний авторський квиток, який він використовуватиме для цього сеансу. Якщо у користувача немає облікового запису, ми створюємо новий з ідентифікатором користувача Facebook, присвоюємо власний унікальний UserID та видаємо свій авторський квиток.
- Потім клієнт повертає автентичний квиток на наступні взаємодії, які потребують аутентифікації.
Це здається правильним підходом до мене, але не впевнений, чи мені не вистачає чогось шалено основного та йду по неправильному (складному) шляху.