问题标签 [google-identity]

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 投票
2 回答
890 浏览

android - getPhotoUrl() 方法中的照片大小 Google Identity 工具包

我使用 Google Identity Toolkit 进行了登录,我注意到 GitkitUser.UserProfile 类检索了照片 url,但是太小了。谷歌文档没有说明照片大小。

https://developers.google.com/identity/toolkit/android/reference/com/google/identitytoolkit/GitkitUser.UserProfile.html#getPhotoUrl()

例如,对于 Facebook 登录,getPhotoUrl() 方法返回:

https://scontent.xx.fbcdn.net/hprofile-xap1/v/t1.0-1/p50x50/12651146_10208004779813340_3124516205553866664_n.jpg?oh=efa817d10aaf9d184a767bae81a71071&oe=57685

例如,使用 Gmail 登录时,getPhotoUrl() 方法返回:

https://lh6.googleusercontent.com/-5XFRyKHh7Os/AAAAAAAAAAAI/AAAAAAABIo/Trf7GjTnFec/s96-c/photo.jpg

在 Gmail 照片 URL 中删除 /s96-c(或替换为 /s200-c)看起来很大,但我需要解决 Facebook 照片的问题。

0 投票
2 回答
2412 浏览

google-app-engine - 应用程序默认凭据无法在本地与 App Engine 一起使用

在 OS X 上开发的 java 应用程序引擎项目中本地运行时,很难将默认应用程序凭据加载到数据流 SDK 中。部署时运行良好。

据此,开发应用程序服务器不支持它们,您应该使用 gcloud 命令行工具的命令:gcloud preview app run- 但根据官方 Google Group for SDK here,该命令已于 2016 年 1 月弃用。

所以我似乎陷入了困境和困境之间......有谁知道如何让应用程序默认凭据在本地与 App Engine 应用程序一起工作?

我正在尝试使用 Dataflow API,它只是在开始使用云存储 API 时抛出,这是 Pipeline 所做的第一件事,因为它似乎无法从环境变量中加载正确的凭据(即肯定在 ENV 和 appengine-web.xml<env-variables>元素中设置)或从~/.config/cloud/default_application_credentials.json文件中设置。

干杯!

0 投票
1 回答
57 浏览

authentication - 有没有办法强制我网站的用户在使用 Google 身份平台登录我的网站时使用两步验证?

我有一个网站,用户可以在其中使用 Google 登录名登录。我想强制他们中的一些人(希望更好地保护他们在我的网站上的帐户)使用两步登录进行登录,即使他们还没有为 Gmail 激活它。

0 投票
1 回答
67 浏览

google-identity-toolkit - 禁用自我注册

我正在尝试在 Google Identity Toolkit 中禁用用户自行注册,或者限制可以注册的电子邮件在我拥有的数据库中进行比较。可能吗?谢谢。

0 投票
1 回答
137 浏览

java - Identity Toolkit for Websites v3 添加 access_type=offline 以继续参数值?

Identity Toolkit for Websites v3 提供了授权码 signInSuccess 回调 tokenString 参数。

虽然 //www.gstatic.com/authtoolkit/js/gitkit.js 是混淆和无证的,我发现 .gstatic.com/authtoolkit/js/gitkit-debug.js 应该有帮助,但我仍然好奇是否有更好的方式,或者如果我错过了什么。

问题是我找不到设置参数 access_type=offline 的方法,因此无法获取刷新令牌,因此使用Google API Client Library for Java,使用 idp google.com 登录后似乎不是一个选项。我不能将它与提供的联合登录解决方案一起使用。我需要单独实现谷歌提供者 oauth 流程......我不敢相信我一定会在这里遗漏一些东西。

如果我不能使用它来访问其他 google api,那么在 url # 中提供对授权代码的访问有什么意义。

无论如何,早在 2012 年,有人遇到了同样的问题,在 [this][2] 论坛讨论中看到的 v1 提供了解决方案。

响应开头为“不同的 IdP 有不同的方式来获取刷新令牌,即对于 Microsoft,需要一个“wl.offline_access”范围;对于 Google,需要一个“access_type=offline”URL 参数。目前 GITKit 还没有但有一种标准化的方式来做到这一点,但我们正在研究它。”

如果他们在 2012 年研究它,肯定会有某种方法......无论如何,我目前的要求只是访问谷歌 api。

因此,比较 google oauth playground 的流程,您可以在其中选择 access_type=offline 和帐户选择器 url continue ... 看起来像这样

您可以在哪里看到 access_type 参数。我在所有正确的地方向 gitkit-debug.js 添加了一些额外的配置属性,然后跟踪执行步入函数直到发送 POST,即使我的新参数一直在数据中,直到它被发送我得到一个不包含它们的网址

调试控制台的屏幕截图,显示 POST 之前的数据对象状态

我生成的 url continue 参数如下所示

为什么以及如何删除 access_type=offline ?

0 投票
1 回答
351 浏览

google-cloud-platform - 间歇性(但频繁)谷歌身份工具包验证错误:“明文太大”

我有时(但并非总是)从 Google 身份工具包中收到“纯文本太大”的错误。它似乎在应该尝试验证签名(使用 RSA)的部分中。由于它正在验证有效负载的 SHA256 哈希,因此明文大小不应有任何变化。

如果我记录它尝试使用的令牌,并将其与 Google RSA 证书一起提供给https://jwt.io/的调试器(来自https://www.googleapis.com/identitytoolkit/v3/relyingparty/ publicKeys ; 使用 jwt.io 放在顶部“kid”下的红色框中的密钥标识符),它表示签名有效。

这只发生在一部分时间里,也许是一半多一点。如果我重复验证,它似乎很好。

这似乎只发生在新的身份验证上;如果它已经过身份验证,那么一切正常,即使我当前没有使用会话 cookie:我的代码验证每个请求的 gtoken 身份验证。一旦我登录,一切都很好,直到我退出(再次,通过 gitkit)。但是,如果我稍后再次登录,我很可能会遇到此错误。

我将 App Engine 用于我的基础架构。dev_appserver 和已部署的 App Engine 以及使用 JavaScript gitkit 库的桌面浏览器和使用 Objective C gitkit 库的 iOS 应用程序都会发生这种情况。(我没有针对 dev_appserver 使用 iOS 进行测试,仅在部署中。)

我正在使用的代码如下所示:

堆栈跟踪如下(从上面引用的行开始):

仅当有效负载的大小超过 RSA 密钥的大小时,才会出现“纯文本太大”错误。由于它正在针对 2048 位 RSA 密钥验证 SHA256 哈希,所以应该没问题,所以我想知道有时从 googleapis.com 加载密钥是否有问题。我的下一步是使用 API stats 模块在发生这种情况的请求中查找 urlfetch 调用,并增加 _pycrypto_crypt.py 以记录它试图验证的 RSA 密钥。但我想我会在 Stack Overflow 上检查一下,看看是否有人已经走上了这条路。

更新:通过一些额外的日志记录,我学到了一些东西。首先,gitkit API(或其使用的库之一)不使用 JWT 标头中指定的密钥 ID,而是迭代尝试 Google Identity Toolkit 密钥集中的每个密钥。其次,当我在有足够的日志记录时遇到错误时,它一直在测试真正在密钥集中的密钥之一,因此这使我关于加载密钥问题的理论无效。但它确实是在尝试针对 2048 位密钥验证 256 字节字符串,所以它应该完全没问题。

最后,尽管它通常会遍历所有键,但在我遇到此错误时,它会在尝试的第一个键上遇到错误。这让我想知道,在某些情况下,我是否在早期导入了一个损坏的 pycrypto。

正如您从回溯中看到的那样,我使用的是 Google 提供的 pycrypto,尽管在我的应用程序的“lib”目录(位于 sys.path 中)中有一个本地编译的,当我在 Google 中出售时保存在那里身份工具包。

0 投票
1 回答
147 浏览

android - 在索尼爱立信 WT19a(Android 版本 2.3.4,API 10,320x480 像素)上的对话框“Google Save Smart Lock password with Smart Lock?”中显示问题

我正在运行 GitHub 存储库 googlecodelabs/android-smart-lock 中最后一个分支的代码,该代码与关于 Smart Lock 的 Google 代码实验室相关联(“使用 Smart Lock 无缝登录”,如果您感兴趣的话)。

问题是在我的设备(Sony Ericsson WT19a,Android 版本 2.3.4,API 10,320x480 像素)上,登录后出现此对话框,其中“保存密码”按钮未出现,消息为不完整:

在此处输入图像描述

它应该看起来像这样(这是在 Genymotion 模拟器 Android 5.1 上运行的相同代码):

在此处输入图像描述

我可以做些什么让对话框在我的设备上正常显示吗?或者这是只有 Google 的开发人员才能解决的问题?

0 投票
1 回答
2673 浏览

java - 从 GoogleIdToken 获取用户个人资料

我正在尝试这样做:

https://developers.google.com/identity/sign-in/web/backend-auth#calling-the-tokeninfo-endpoint

我使用我的 CLIENT_ID 复制粘贴了示例中的 Java 代码,但除了用户 ID、电子邮件和已验证的电子邮件之外,我无法获得更多信息。idTokenString 验证 OK。其他人有这个工作吗?

我在 OAuth 2.0 Playground 中询问了这些:

https://www.googleapis.com/auth/plus.login

https://www.googleapis.com/auth/plus.me

https://www.googleapis.com/auth/userinfo.email

https://www.googleapis.com/auth/userinfo.profile

https://www.googleapis.com/auth/plus.moments.write

https://www.googleapis.com/auth/plus.profile.agerange.read

https://www.googleapis.com/auth/plus.profile.language.read

https://www.googleapis.com/auth/plus.circles.members.read

我猜 user.profile 是我只需要的?

这是我的代码:

使用:java-api-client 1.20.0

0 投票
1 回答
123 浏览

google-identity-toolkit - 没有“电子邮件优先”选项的 Google 身份工具包

我计划使用 Google Identity Toolkit,并且Google Provider集成 (没有其他提供商,将来也没有机会)

无论我看到什么例子,流程都显示“电子邮件优先”选项。在提供基于域的电子邮件后,它需要到身份提供者站点。

场景是,如果用户没有登录,用户需要输入他的电子邮件地址两次,首先在“Email First”页面,然后在Google Account Page

正如我所拥有的,只有谷歌作为提供商,问题是我如何直接将用户重定向到谷歌帐户,一旦他点击登录按钮,而不是向他显示“电子邮件优先”页面?

已编辑

现在我的流程几乎没有变化,我正在使用的网站已经与不同公司的活动目录集成,所以一旦用户输入他的电子邮件地址,基于电子邮件域的用户将被重定向到所需的公司门户进行用户验证。

现在网站正计划允许谷歌账户,当用户输入谷歌域的电子邮件地址时,使用应该被重定向到谷歌账户页面。网站所有者,不想看到“电子邮件优先”或“提供商优先”屏幕,因为这是糟糕的用户体验

0 投票
0 回答
134 浏览

android - 使用 App Engine 后端实现新的 Google 登录

谷歌刚刚发布了一种让用户使用他们的谷歌账户登录应用程序的新方法:

http://android-developers.blogspot.de/2016/05/improving-security-and-user-experience.html https://developers.google.com/identity/sign-in/android/start-integrating

由于建议使用新的 API,我想这样做。但是,我还不太确定其中的一些步骤。我很清楚如何实现登录工作流本身(示例应用程序很容易理解)。但是,如何获取后端服务的 API 服务句柄?

到现在为止,我以前是这样做的:首先,得到一个GoogleAccountCredential这样的:

然后,我将这些凭据传递给为应用引擎端点自动生成的 android 客户端库:

就是这样。但是,我不知道如何GoogleAccountCredential在使用新的登录工作流程时获得。有人有想法吗?我还需要更新后端吗?正如我所说,与我的后端的整个 OAuth2 通信和授权都是由自动生成的客户端库完成的。