3

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

经过一番搜索,我发现有两种解决方案:

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

据我了解,两者都允许我们保存帐户相关信息。但智能锁的优势在于,保存的凭据也可以在相应的安卓应用程序中使用。

谢谢 !

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

4

1 回答 1

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(以及基于令牌的帐户的其余部分)上可用。

如有任何后续问题,请发表评论。

于 2017-11-05T02:07:00.553 回答