Google Smart Lock与凭据管理API

时间:2017-11-03 12:55:46

标签: google-signin google-identity google-smartlockpasswords credential-manager

我想为我的网络应用实施无摩擦登录过程。

经过一番搜索后,我发现有两种解决方案可供选择:

我的问题是,这两个API之间有什么区别(如果有的话)以及这两个API的可能用例。

据我所知,两者都允许我们保存与帐户相关的信息。但智能锁的优势在于,保存的凭据也可用于相应的Android应用程序。

谢谢!

注意: 我打算支持从多个来源(google,facebook,linkedin等)登录,而不仅仅是google。

1 个答案:

答案 0 :(得分: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);
  }
}

有关详细信息,请参阅documentation。该图书馆目前不支持非Google /密码形式的身份,您现在必须自己与其他提及的身份提供商SDK实施登录流程。

另请注意,与Google帐户相关联的任何登录(基于OAuth令牌或已存储和同步的密码)都可以在Android和Chrome(以及其他基于令牌的帐户)中使用。

请留下任何后续问题的评论。