Google Smart Lock 与凭据管理 API
Posted
技术标签:
【中文标题】Google Smart Lock 与凭据管理 API【英文标题】:Google Smart Lock vs Credential Management API 【发布时间】:2018-04-16 05:15:27 【问题描述】:我想为我的网络应用实现无摩擦登录过程。
经过一番搜索,我发现有两种解决方案:
Google Smart Lock。 Credential Managment API。我的问题是,这两个 API 有什么区别(如果有的话)以及这两个 API 的可能用例是什么。
据我了解,两者都允许我们保存帐户相关信息。但智能锁的优势在于,保存的凭据也可以在相应的安卓应用中使用。
谢谢!
注意: 我打算支持从多个来源(google、facebook、linkedin 等)登录,而不仅仅是 google。
【问题讨论】:
你能检查我的问题吗? ***.com/questions/63830860/… 【参考方案1】:TL;DR一键式注册/自动登录库包括凭据管理。您可能应该只使用该库:https://developers.google.com/identity/one-tap/web/get-started
详情
javascript 库支持使用 Google 帐户创建帐户(通过可以在内容页面上显示的简化的内联用户体验,而不是用户必须导航到基于按钮的传统用户体验并确定选择哪个按钮/选项并与之交互弹出/重定向)
对于返回用户,该库允许您在页面加载时以编程方式检索现有一键式/传统 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 上可用(以及基于令牌的帐户的其余部分)。
如有任何后续问题,请留下 cmets。
【讨论】:
嗨@steven,感谢您的回复。但正如我所见,CM api 还允许来自其他联合登录提供程序的自动身份验证。但问题是它只能从 Chrome 60 开始使用。另一方面,智能锁项目 (googleyolo) 跨浏览器提供相同的功能。但问题是它仅适用于谷歌帐户。我说的对吗? CM API 不支持完全自动登录到其他提供商...它只记得以前使用过哪个(但不返回所需的令牌,您仍然需要其他服务的 SDK )。这使得集成变得复杂并且没有被广泛使用,所以我们没有将它包含在包装器中,但是你可以同时做... 你能检查我的问题吗? ***.com/questions/63830860/…以上是关于Google Smart Lock 与凭据管理 API的主要内容,如果未能解决你的问题,请参考以下文章