Jsw*_*swk 5 google-authentication google-signin google-one-tap
我正在尝试迁移到新的“使用 Google 登录”,但缺少以前使用过的一项重要功能。
基本上我的应用程序正在与本地创建的应用程序用户一起使用。在应用程序中的某一时刻,系统会提示用户使用 Google 帐户登录,以确认他是执行某些 Google API 操作的正确用户。我可以使用即将弃用的Google Sign-In 库中的以下代码来实现这一目标:
const auth = gapi.auth2.getAuthInstance();
if (!auth.isSignedIn.get())
await auth.signIn({
prompt: "select_account",
login_hint: employeeEmail
});
...
Run Code Online (Sandbox Code Playgroud)
而且效果很好。现在上述所有方法都已被弃用,并且没有直接替代品,或者至少我不明白如何实现相同的结果。我可以通过检查收到的 id 令牌来确认用户身份:
google.accounts.id.initialize({/*options*/);
...
google.accounts.id.prompt();
Run Code Online (Sandbox Code Playgroud)
但是,如果用户没有活动的 google 会话,则不会发生任何情况。实际触发登录的唯一方法是单击 Google 登录按钮,使用以下方式呈现:
google.accounts.id.renderButton(htmlElement, {/*options*/});
Run Code Online (Sandbox Code Playgroud)
单击按钮后,将显示登录弹出窗口,一切正常,调用初始化配置的回调并恢复流程。
问题是,如何以编程方式触发登录弹出窗口?以上所有内容都是从我网站上的特定按钮单击开始的。
供参考
实际上,我成功地使用新 API 重现了几乎相同的行为。这可能不是最优雅的方法,但我signIn用google.accounts.oauth2.initTokenClient. 尽管它应该仅用于接收令牌,但它也会创建一个有效的 Google 会话,然后可以使用静默身份验证 ( prompt: "none") 来检测该会话;
| 归档时间: |
|
| 查看次数: |
1022 次 |
| 最近记录: |