问题标签 [google-authentication]

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 回答
1745 浏览

android - Google play services sdk:在身份验证期间请求离线访问

有没有办法在 android 上使用 Google play services sdk 请求离线访问?我知道原始 HTTP api可以通过请求刷新令牌来执行此操作,但找不到通过新的Google Play 服务 sdk来执行此操作的方法。

新的 sdk 使用该GoogleAuthUtil.getToken()方法为应用程序提供访问令牌,但访问令牌每小时到期一次。我可以发出原始 http 请求并让用户从 Web 视图或浏览器登录,但我更喜欢使用 sdk 本地执行此操作的方法,因为这对用户来说是更好的体验。

0 投票
3 回答
7064 浏览

android - GoogleAuthUtil 无法解析

我在我的 Android 应用程序中使用 Google Play 服务的授权和 GoogleAuthUtil。我大约 2 个月前做了这部分,从那以后它一直工作得很好。昨天,我更新了 SDK。现在我在我的应用程序中遇到了这个错误。它说“无法解析 GoogleAuthUtil”。
更新后的 SDK 有什么变化吗?
我该如何解决这个问题?

我正在导入以下内容:

我正进入(状态

com.google.android.gms.auth 无法解析。

0 投票
1 回答
402 浏览

google-app-engine - 是否可以将 OAuth2.0 用于 Google 域共享联系人 API

我必须为 Google Domain Shared Contacts API ( https://developers.google.com/google-apps/domain-shared-contacts/#authsub ) 创建一个应用程序。仅指定了两种身份验证方法 1.ClientLogin 2.AuthSubProxy

我不想存储用户的用户名和密码,所以唯一的选择是 AuthSubProxy 。当我点击此链接https://developers.google.com/accounts/docs/AuthSub时,表示此方法已被弃用。任何人都可以清除它,我们可以将 OAuth2.0 用于谷歌域共享联系人 api 或者唯一的选择是使用不推荐使用的 AuthSubProxy 方法??请回复!

0 投票
1 回答
455 浏览

android - 除了 Google 之外,是否有任何 OAuth2 提供程序提供访问令牌验证而无需额外的服务器调用?

我正在开发一个必须与它自己的自定义后端 API 对话的移动应用程序。我宁愿不推出自己的身份验证和帐户管理,我宁愿使用现有提供商的 Oauth2。

Google 允许您在服务器端验证 Google 生成的 Oauth 令牌,而无需调用 Google 的服务器。这很重要,因为我将分别验证每个请求。如果服务器每次都需要调用外部服务来验证令牌,那么服务将变得更慢且更难扩展。Google 在本节中提到了如何验证其令牌:验证令牌。除了需要大约每天刷新一次 Google 的证书外,您可以仅在您自己的服务器上验证 Google 生成的 OAuth 令牌。

我的问题是,是否有其他 OAuth 提供者不需要额外调用来验证令牌?Facebook 和 Twitter 似乎都需要调用他们的服务器来验证令牌。由于这些令牌具有过期时间,因此调用外部服务来验证此令牌并在令牌有效期内缓存此结果是否被认为是一种好习惯?如果这是一个好的做法,我也许可以考虑除了 Google 的 OAuth 之外的这些服务。

0 投票
5 回答
7628 浏览

android - 在 node.js 服务器中验证谷歌授予的 OAuth 令牌的正确方法是什么?

我正在尝试将 Android 平台的移动应用程序验证为自定义 node.js 服务器 api。我想为此使用 Google OAuth2 令牌,而不是自己进行身份验证,因为安装了 Google Play 的 Android 设备使应用程序开发人员可以使用它。我正在使用GoogleAuthUtil.getToken来自 Google Play 服务库的调用,在此处记录。我正在尝试遵循此android 开发人员博客文章中概述的建议

在我的情况下,该getToken方法返回一个 857 字节的长字符串。如果我尝试将此令牌传递给 Google 的TokenInfo端点,它会返回:

{'error': 'invalid_token', 'error_description': '无效值'}

我在这里做错了什么?在 getToken 调用的“范围”中,我发送: audience:server:client_id:**i_put_my_clientid_here**。我为“已安装的应用程序”生成了一个客户端 ID。使用此客户端 ID,对 getToken 的调用根本不起作用。当我为“服务帐户”生成客户端 ID 时,调用成功,但我得到了一个 857 字节的令牌,当如上所述传递到 TokenInfo 端点时该令牌失败。

编辑:我还为“Web 应用程序”创建了一个客户端 ID,因为它看起来是调用时使用的正确客户端 ID getToken。但是行为是一样的,我得到了一个 857 字节的令牌,在调用谷歌的端点时它没有验证。

如何在 Android 上使用 Google Play 服务正确获取有效的身份验证令牌?一旦我有了正确的令牌,什么是正确的 node.js 库来验证它的服务器端?我可以使用passport-google-oauth吗?

0 投票
2 回答
638 浏览

javascript - 我可以使用 jwcrypto 验证 Google 生成的 OAuth2 id_token 吗?

基于这个问题的工作:在 node.js 服务器中验证 google 授予的 OAuth 令牌的正确方法是什么?

我可以使用jwcrypto库来验证 node.js 服务器中的 Google OAuth2 令牌吗?我有 Google 提供的 857 字节令牌,它使用 Google 的网络端点在https://www.googleapis.com/oauth2/v1/tokeninfo?id_token=. 从理论上讲,我可以使用令牌以及此处提供的 Google 证书它们看起来像这样:

到目前为止,我什至无法使用 loadPublicKey 方法将密钥加载到 jwcrypto 中。大概一旦我得到这个工作,我可以调用验证方法。网上有这方面的工作例子吗?

0 投票
1 回答
395 浏览

ruby-on-rails - Ruby 中的 Omniauth + OpenID:弹出窗口中的 Google OpenID 身份验证

在 Ruby 中使用omniauth 和omniauth-openid gem,我正在寻找一种在身份验证期间弹出窗口的方法。

根据 Google 的 OpenID 文档 ( https://developers.google.com/accounts/docs/OpenID),OpenID用户界面 1.0 具有允许弹出式身份验证的设置。

我检查了 ruby​​-openid(它是 omniauth-openid 的依赖项)以确认它已升级为支持 OpenID 用户界面 1.0。

现在我只是想弄清楚最后一块拼图......我假设它会在我的配置设置中的某个地方,目前看起来像这样:

--- 更新:(2013 年 5 月 8 日) ---

所以我破解了 rack-openid gem 以包含 openid ui 扩展,现在我的 URL 如下所示:

https://www.google.com/accounts/o8/ud?openid.ax.if_available=ext4%2Cext5%2Cext6%2Cext7%2Cext8&openid.ax.mode=fetch_request&openid.ax.required=ext0%2Cext1%2Cext2%2Cext3&openid。 ax.type.ext0=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ax.type.ext1=http%3A%2F%2Faxschema.org%2FnamePerson&openid.ax.type.ext2=http%3A%2F% 2Faxschema.org%2FnamePerson%2Ffirst&openid.ax.type.ext3=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast&openid.ax.type.ext4=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffriendly&openid.ax。 type.ext5=http%3A%2F%2Faxschema.org%2Fcontact%2Fcity%2Fhome&openid.ax.type.ext6=http%3A%2F%2Faxschema.org%2Fcontact%2Fstate%2Fhome&openid.ax.type.ext7=http% 3A%2F%2Faxschema.org%2Fcontact%2Fweb%2Fdefault&openid.ax.type.ext8=http%3A%2F%2Faxschema.org%2Fmedia%2Fimage%2Faspect11&openid。claim_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns= http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ns.sreg=http%3A%2F% 2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.ns.ui=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0&openid.realm=http%3A%2F%2Flocalhost%3A1999&openid.return_to= http%3A%2F%2Flocalhost%3A1999%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.sreg.optional=postcode%2Cnickname&openid.sreg.required=email%2Cfullname&openid.ui.mode=popupmode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ns.sreg= http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.ns.ui=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0&openid.realm=http%3A%2F% 2Flocalhost%3A1999&openid.return_to=http%3A%2F%2Flocalhost%3A1999%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.sreg.optional=postcode%2Cnickname&openid.sreg.required=email%2Cfullname&openid.ui.mode=popupmode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.ax=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ns.sreg= http%3A%2F%2Fopenid.net%2Fextensions%2Fsreg%2F1.1&openid.ns.ui=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fui%2F1.0&openid.realm=http%3A%2F% 2Flocalhost%3A1999&openid.return_to=http%3A%2F%2Flocalhost%3A1999%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.sreg.optional=postcode%2Cnickname&openid.sreg.required=email%2Cfullname&openid.ui.mode=popupreturn_to=http%3A%2F%2Flocalhost%3A1999%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.sreg.optional=postcode%2Cnickname&openid.sreg.required=email%2Cfullname&openid.ui.mode=popupreturn_to=http%3A%2F%2Flocalhost%3A1999%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.sreg.optional=postcode%2Cnickname&openid.sreg.required=email%2Cfullname&openid.ui.mode=popup

所有参数看起来都正确,特别是 openid.ns.ui 参数和 openid.ui.mode 参数;但是,行为没有改变......我做错了什么吗?有什么想法吗?

0 投票
1 回答
195 浏览

azure - 我可以在 ACS 服务命名空间中使用“友好名称”吗?

我成功地使用 ACS 登录到使用 Windows Live、Facebook 和 Google 的 Web 应用程序。

Google 在确认消息中包含服务命名空间,如下所示:

我想这是正确的行为,因为作为用户,您想知道要求索赔的是什么。Windows Live 不显示任何内容,Facebook 使用已设置的应用程序名称。

显然,对于用户来说,看到谷歌的严谨性可能会让人感到困惑。您来自mydomain.com,并且正在批准myfunnynamespace.accesscontrol.windows.net

有什么方法可以将信息传递给谷歌,这对用户来说更有意义?我知道您无法更改 Google 正在寻找的 URL。但是 ACS 可以传递附加信息,例如应用程序名称,还是可以像 Facebook 一样创建“应用程序”?

0 投票
3 回答
3857 浏览

javascript - 如何让匿名用户编辑 Google Drive Realtime 文档?

我想创建一个使用Google Drive Realtime API的网页,允许用户匿名编辑多个文本字段。因为可能有多个用户同时访问该页面,所以我想防止某人的编辑被另一个用户覆盖,而第一个编辑者不知道他的编辑被覆盖了。

但是,从快速开始,似乎人们需要使用 Google 帐户授权才能开始编辑。是否可以让任意用户编辑我的实时模型,而无需登录?类似于让公众编辑 Google Docs 电子表格。

0 投票
1 回答
2135 浏览

javascript - Google Javascript API:访问令牌过期后会发生什么?

我有一个使用 Google Javascript API 的客户端网络应用程序(无后端)。我对登录成功后获得的访问令牌有疑问。

从回调中,我们可以看到 access-token 设置为 1 小时后过期。

问题是,我怎样才能“获得一个新的令牌”?从文档中,我的印象是,在令牌无效后,我们必须(我引用)执行一个新的重新授权流程,并将立即设置为 true 以获得最新的访问令牌。

来源: https ://developers.google.com/+/web/api/javascript

但是,当我尝试再次调用 auth 方法时:

我得到了令牌对象,但里面没有访问令牌。

我错过了什么吗?我们通常如何在一个过期后获得一个刷新的令牌?