问题标签 [google-one-tap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1493 浏览

javascript - 使用谷歌一键式javascript API时如何定义变量谷歌

我正在关注此文档谷歌一键登录以在我的反应应用程序中实现谷歌一键登录。

我已将以下代码添加到我的组件 JSX 中,并开始让谷歌提示登录:

我面临的问题是回调函数没有触发。在寻找解决方案后,我偶然发现了这个SO question。OP 提出了类似的问题,并使用 javascript API 语法向谷歌显示一键而不是 HTML 代码要遵循上述问题,我阅读了此文档Use the One Tap JavaScript API。但我无法理解变量 google 来自哪里?

示例代码:

如果有人能告诉我这可能会解决我的回调函数未触发的问题。谢谢!

0 投票
0 回答
259 浏览

google-identity - Google One Tap 无法在移动 Chrome 上运行

我已经使用此处的文档实现了 Google 一键登录网络,它在桌面 Chrome 上运行良好。但是,即使我已登录 Google 并且该域已列入白名单,它也根本不会出现在 iOS Chrome(版本 87)上。

我该如何解决?

0 投票
1 回答
564 浏览

reactjs - 谷歌一键登录不适用于反应应用程序中的子域域

我已经按照Google one tap Web中的步骤在我的 react 应用程序中实现了 google 一键登录。

下面是代码:

这按预期工作并在我的本地环境中显示提示,但在开发环境中没有显示任何内容。我已按照文档中的说明在 google 帐户上添加了我的开发环境域:

如果您的项目没有 Web 应用程序类型的客户端 ID,请单击创建凭据 > OAuth 客户端 ID 来创建一个。请务必在 Authorized JavaScript origins 框中包含您网站的域。请注意,Google One Tap 只能在 HTTPS 域中显示。当您执行本地测试或开发时,您必须将 http://localhost 和 http://localhost:<port_number> 添加到 Authorized JavaScript origins 框中。

我的开发网址类似于:https ://dev.example.com

更新:

根据跨子域显示一键,我们需要在一键提示的 html 代码中添加“data-state_cookie_domain”属性,但在我的情况下,如您在上面看到的,我使用 JS 代码来显示一键提示如何在 JS 中添加代码?

更新: 我添加了 state_cookie_domain:

但这并没有解决问题,仍然没有触发谷歌一键式代码。

0 投票
0 回答
326 浏览

android - Android One Tap SignIn,生成的 ID 令牌中缺少随机数

根据文档setNonce

我希望随机数将作为 IDToken 的声明包含在内,但是,在使用以下代码设置随机数之后:

并从以下位置获取 id 令牌:

解码返回的 idToken,nonce 丢失。

是缺陷吗?还是我错过了什么?

此外,在文档中验证 ID 令牌的完整性,它没有提到在ID 令牌验证下定义的随机数验证

0 投票
2 回答
207 浏览

android - Android 一键登录:无法显示密码保存对话框

我正在尝试实现 Android One Tap Sign In,但无法在此处显示此对话框:

密码保存对话框

我不断收到消息:com.google.android.gms.common.api.ApiException: 16: Skipping password saving since the user is likely prompted with Android Autofill.

我怎样才能解决这个问题?

代码:

文档:https ://developers.google.com/identity/one-tap/android/save-passwords

0 投票
0 回答
685 浏览

android - Google OneTap 登录密码或错误代码:10 / 16

我正在尝试为我开发的应用程序设置一个 Google OneTap 登录按钮(我没有使用 Firebase 登录),由以下来源指导: https ://developers.google.com/identity/one-tap/android/开始

我在 Cloud Console 上创建了 OAuth 和 Web 凭据。为了生成 OAuth Id,我采用了 Android Studio 在登录报告中提供的 SHA1(我采用了开发 SHA-1,但无论如何它们都是相同的)。

我已经R.string.default_web_client_id从 WebAuth 输入了客户端 ID(不是来自 OAuth 的 Android ID)。

当我使用 Firebase RTDB 存储一些数据时,我也在那里设置了这个 SHA-1。Manifest、Cloud Console 和 Firebase Console 中的项目名称相同。我从 Firebase 下载了“google-services.json”并将其放在应用程序根目录中。在 Firebase 上,我还设置了有效的服务电子邮件。

这就是我在登录活动中实现 OneTap 的方式:

主要问题是在某些 AVD 上它运行良好,在其他 AVD id 上会出现错误:

但是,在此 AVD 上,Google 服务是最新的,并且用户已登录到 Google Play

在真实设备上,我收到此错误:

谷歌服务在这里也是最新的,用户登录到 Play 商店。

我到处使用我的真实 gmail 地址。

有什么问题?

更新

花了很多时间试图解决这个问题,我刚刚发现 OneTap 在某些设备上工作,而在其他设备上没有工作。还尝试多次重新创建凭据。

没有太多时间来解决这个问题,我只使用 OneTap 方式和备用方式使用 Google 凭据登录。

更新 2

在 Android Emulators 上似乎16: Cannot find a matching credential与尝试登录的用户凭据无关,而是与 Google Cloud Console 中的应用程序凭据有关。当我按照“一键登录和注册入门”中所述在 Google Cloud Console 上填写同意页面时,该问题没有重现 (我为 EULA 等的链接留下了空白字段)。然后我更改了包名称(出于其他原因),然后仔细检查此包名称在 Google Cloud Console 和 google-services.json 的凭据配置中是否相同。我还检查了 google-services.json 是否位于[project_root]/app目录下。

几天后我会在真实设备上检查这个。

0 投票
0 回答
149 浏览

android - IOS chrome 中未显示 Google OneTap 注册提示

我们最近在我们的 Web 项目中实现了 Google 的 OneTap 注册功能。

它在 web 和 android 移动浏览器中运行良好。但是我们没有在 IOS Chrome 中得到提示。

根据 Google 文档,它也应该涵盖 IOS Chrome。 https://developers.google.com/identity/one-tap/web/guides/supported-browsers

IOS chrome版本我们试过87.0

有人可以帮忙吗,在此先感谢。

0 投票
0 回答
46 浏览

amp-html - Google 一键式 AMP

我们正在使用 google amp-onetap-google 在 AMP 页面上显示 Google onetap

但 onetap 实际上在我的 AMP 页面上不可见,但在我们添加自定义 CSS {height: 100% } 时可见,但此 CSS 会影响我的页面 webvitals CLS。

0 投票
1 回答
339 浏览

python - 一键登录 g_state cookie 在 http.cookies SimpleCookie 上不可解析

我正在尝试在我们的网站上集成 Google One-Tap 登录。对于后端,我使用了一个使用 http 库来解析 Cookie 标头并设置它的龙卷风服务器。更多关于tornadocookie 处理的信息在这里。基本上,Google One-Tap 登录会添加此g_statecookie 来设置用户状态,了解他们如何与 One-Tap 模式 ( source ) 交互,这是一种我们无法在不更改插件功能的情况下更改的行为。

现在由于某种原因,当我self.cookies在龙卷风请求处理程序内部调用时,即使Cookie设置了标头,它也会返回空。cookie 标头如下所示:

由于某种原因,它没有正确解析 cookie 标头。挖出一些代码来解析 tornado 正在使用的 cookie,并尝试了不同的方法来调查它:

因此,只要在 cookie 之前,仍然会解析其他g_statecookie。之后的所有其他内容都不可解析。尝试查找此问题,并且似乎在 http.cookies 库上解析大括号 cookie 时存在问题(source)。

任何人都知道如何格式化客户端请求以防止发送 cookieg_state或至少找到一种不影响解析Cookie标头上所有其他令牌的方法?就像可能重新排列g_statecookie 以始终结束?

0 投票
2 回答
390 浏览

php - 使用 Google One Tap 进行 PHP 身份验证

我在我的网站中插入了“Google One Tap”,然后 Google 使用 POST 方法返回了“凭据”和“g_csrf_token”。现在我想知道,我如何从 PHP 中的“凭据”中获取电子邮件地址?

Codeigniter 4 是否有任何 PHP 库或任何模块?

我在前端只有这个:

在后端文件“myurl/google”中

谢谢