Google Smart Lock против API управления учетными данными

Я хочу внедрить беспрепятственный процесс входа в свое веб-приложение.

После некоторых поисков я обнаружил, что есть два доступных решения:

Мой вопрос: в чем разница между двумя API (если они есть) и каковы возможные варианты использования обоих из них.

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

Спасибо !

Примечание. Я намереваюсь поддерживать вход из нескольких источников (google, facebook, linkedin и т. д.), а не только из Google.


comment
не могли бы вы проверить мой вопрос? stackoverflow.com/ вопросы/63830860/   -  person Nirmal Sinh Revar    schedule 17.09.2020


Ответы (1)


TL;DR библиотека регистрации/автоматического входа в одно касание включает управление учетными данными. Вероятно, вам следует просто использовать библиотеку: https://developers.google.com/identity/one-tap/web/get-started

Подробнее

Библиотека JavaScript поддерживает создание учетной записи с помощью учетных записей Google (с помощью упрощенного встроенного UX, который может отображаться на страницах контента, вместо того, чтобы пользователю приходилось переходить к традиционному UX на основе кнопок и выяснять, какую кнопку/опцию выбрать и взаимодействовать с всплывающим окном). /перенаправить)

А для вернувшихся пользователей библиотека позволяет программно извлекать при загрузке страницы как токены для существующих пользователей с однократным/традиционным входом в Google, так и пароли через API управления учетными данными в браузерах, которые его поддерживают. Вы можете сделать это с помощью такого кода:

const retrievePromise = googleyolo.retrieve({
  supportedAuthMethods: [
    "https://accounts.google.com",
    "googleyolo://id-and-password"
  ],
  supportedIdTokenProviders: [
    {
      uri: "https://accounts.google.com",
      clientId: "YOUR_GOOGLE_CLIENT_ID"
    }
  ]
});

retrievePromise.then((credential) => {
  if (credential.password) {
    // An ID (usually email address) and password credential was retrieved.
    // Sign in to your backend using the password.
    signInWithEmailAndPassword(credential.id, credential.password);
  } else {
    // A Google Account is retrieved. Since Google supports ID token responses,
    // you can use the token to sign in instead of initiating the Google sign-in
    // flow.
    useGoogleIdTokenForAuth(credential.idToken);
  }
}

Подробнее см. в документации. Библиотека в настоящее время не поддерживает формы удостоверения, отличные от Google/пароля, в данный момент вам придется самостоятельно реализовать процесс входа с помощью SDK других упомянутых поставщиков удостоверений.

Также обратите внимание, что любой вход в систему, связанный с учетной записью Google (на основе токена OAuth или сохраненного и синхронизированного пароля), будет доступен в Android и Chrome (и в остальных случаях для учетных записей на основе токена).

Пожалуйста, оставляйте комментарии для любых последующих вопросов.

person Steven    schedule 05.11.2017
comment
Привет @steven, спасибо за ответ. Но, как я вижу, CM API также позволяет автоматическую аутентификацию от других провайдеров федеративного входа. Но проблема в том, что он доступен только с Chrome 60 и выше. С другой стороны, проект Smart Lock (googleyolo) обеспечивает одно и то же во всех браузерах. Но проблема в том, что он доступен только для аккаунтов Google. Я прав ? - person Sachin; 06.11.2017
comment
CM API не поддерживает полностью автоматический вход в систему других провайдеров... он просто запоминает, какой из них использовался ранее (но не возвращает необходимый токен, вам все равно нужен SDK другого сервиса). Это усложняет интеграцию и не получило широкого распространения, поэтому мы не включили его в обертку, но вы можете сделать и то, и другое... - person Steven; 06.11.2017
comment
не могли бы вы проверить мой вопрос? stackoverflow.com/ вопросы/63830860/ - person Nirmal Sinh Revar; 17.09.2020