我想为我的web应用程序实现无摩擦登录过程。
经过一番搜索,我发现有两种解决方案可用:
- 谷歌智能锁
- 凭证管理API
我的问题是,这两个API(如果有的话)之间有什么区别,以及这两个API的可能用例是什么。
据我所知,两者都允许我们保存帐户相关信息。但智能锁的优点是,保存的凭据也可以在相应的android应用程序中使用。
谢谢!
注意:我打算支持从多个来源(谷歌,脸书,linkedin等)登录,而不仅仅是谷歌。
TL;DR一键注册/自动登录库包括凭据管理。您可能只需要使用库:https://developers.google.com/identity/one-tap/web/get-started
详细信息
JavaScript库支持使用谷歌账户创建账户(通过可以在内容页面上显示的精简内联用户体验,而用户必须导航到传统的基于按钮的用户体验,并确定选择哪个按钮/选项并与弹出窗口/重定向交互)
对于返回的用户,该库允许您通过支持它的浏览器中的凭证管理API,以编程方式在页面加载上检索现有一键式/传统Google Sign-In用户的令牌以及密码
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实现登录流。
还要注意的是,任何与谷歌账户相关的登录(基于OAuth令牌或存储并同步的密码)都可以在Android和Chrome上使用(其余用于基于令牌的账户)。
如有任何后续问题,请留下评论。