Як використовувати Touch ID для швидшого та простішого входу до програми

Як використовувати Touch ID для швидшого та простішого входу до програми

Поширене спостереження, що користувачі трохи випадають на ваш екран входу. Ось як я вирішую свою залежність від facebook? . Цей підручник навчить вас, як використовувати ідентифікатор пристрою для швидшого та простішого входу. Незабаром я проведу вас через сходинки, дозвольте лише трохи розповісти.

Більшість програм використовують Touch ID як аутентифікацію другого ступеня. Цей підручник НЕ стосується забезпечення аутентифікації другого ступеня (хоча ви також можете це зробити, якщо прочитаєте цю статтю). Мова йде про використання Touch ID для здійснення виклику сервера для входу користувача.

Тепер, як отримати облікові дані користувача з відбитка великого пальця, щоб здійснити виклик цього сервера? ? Тут заходить служба K eychain . Коли користувач вперше підписується або входить у ваш додаток, збережіть облікові дані в брелоку додатка. Наступного разу, коли користувач вийде з системи, а потім знову відвідає екран входу, блимайте спливаюче вікно з проханням ввійти за допомогою Touch ID. Коли користувач надає дійсний сенсорний ідентифікатор, отримайте ті облікові дані користувача, які ви раніше зберегли в ланцюжку ключів, зробіть свій виклик API і Boom!?.

Тож тут є два кроки:

  • По-перше, вам потрібно зберегти облікові дані користувача у брелок. Ви можете зробити це, коли користувач зареєструється або коли він увійде у ваш додаток вперше.
  • По-друге, використовуйте Touch ID для перевірки користувача, а потім отримайте його облікові дані із служби брелоків ключів.

Я використовую KeychainPasswordItem , гарну обгортку над Keychain, доступну тут: developer.apple.com. Вони мають дуже хороший, детальний приклад того, як використовувати цей загальний брелок. Піди подивись.

В рамках першого кроку використовуйте метод виклику, вказаний нижче, з електронною адресою користувача як обліковим записом та паролем, коли користувач реєструється та входить.

Ми зберігаємо електронну пошту користувача на UserDefaults для подальшого використання. Було б краще, якщо ви блимаєте спливаюче вікно і запитуєте дозволу користувача використовувати цю функцію. Я пропускаю цю частину для цього підручника ?.

Використовуйте Touch ID для доступу до брелока

Щоб використовувати Touch ID, спочатку потрібно додати фреймворк LocalAuthentication до своїх двійкових файлів проекту. Ви можете зробити це, перейшовши у меню Проект> Фази побудови> Пов'язати двійковий файл з бібліотеками:

Далі імпортуйте фреймворк LocalAuthentication у ваш контролер подання входу.

import LocalAuthentication

Ми заповнили своє текстове поле userName електронною поштою облікового запису користувача, яку ми раніше зберегли в UserDefaults.

Далі нам потрібно перевірити, чи можлива аутентифікація на поточному пристрої. Перевірте наступний код:

Ми викликаємо authenticateUserUsingTouchId () у viewDidAppear (). LAContext - це підклас NSObject і представляє наш поточний контекст автентифікації. Тепер, якщо аутентифікація можлива, підтвердьте справжність Touch ID, викликавши evaluPolicy ()

context.evaluatePolicy () надає нам спливаюче вікно Touch ID із нашим останнім іменем користувача, яке ми вказали як локалізовану причину в методі evaluPolicy () .

На цьому частина 1 кроку 2 завершується: отримання користувачем автентифікації за допомогою Touch ID. Далі - використання Touch ID для доступу до брелока, де ми зберігаємо або отримуємо облікові дані користувача для входу.

Коли користувач надає дійсний Touch ID, нам потрібно завантажити пароль із брелока та здійснити наш виклик POST для входу користувача.

if authSuccessful { self.loadPasswordFromKeychainAndAuthenticateUser(lastAccessedUserName)}

Це воно! Ви можете оновити свою систему автентифікації для підтримки декількох облікових записів. Перевіривши справжність Touch ID, спалахніть спливаюче вікно та попросіть користувача вибрати обліковий запис, для якого він бажає увійти. Потім отримайте облікові дані користувача, відповідні цьому обліковому запису, із брелока. Дякуємо за читання!