问题标签 [google-oauth]
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.
web-services - 如何验证 Google 身份验证 API 访问令牌?
如何验证 Google 身份验证访问令牌?
我需要以某种方式查询 Google 并询问:[给定访问令牌] 对 [example@example.com] Google 帐户有效吗?
精简版
很明显,通过Google Authentication Api :: OAuth Authentication for Web Applications提供的访问令牌如何用于从一系列 Google 服务请求数据。目前尚不清楚如何检查给定的访问令牌是否对给定的 Google 帐户有效。我想知道怎么做。
长版
我正在开发一个使用基于令牌的身份验证的 API。在提供有效的用户名+密码或提供来自N个可验证服务中的任何一个的第三方令牌时,将返回一个令牌。
其中一项第三方服务将是 Google,它允许用户使用他们的 Google 帐户对我的服务进行身份验证。稍后将扩展到包括 Yahoo 帐户、受信任的 OpenID 提供商等。
基于 Google 的访问的示意图示例:
“API”实体在我的完全控制之下。“公共界面”实体是任何基于 Web 或桌面的应用程序。一些公共接口在我的控制之下,其他的不会,还有一些我可能永远都不知道。
因此,我不能信任在第 3 步中提供给 API 的令牌。这将与相应的 Google 帐户电子邮件地址一起提供。
我需要以某种方式查询 Google 并询问:此访问令牌对 example@example.com 有效吗?
在这种情况下,example@example.com 是 Google 帐户的唯一标识符 - 某人用于登录其 Google 帐户的电子邮件地址。这不能被假定为 Gmail 地址 - 有人可以拥有 Google 帐户而没有 Gmail 帐户。
Google 文档清楚地说明了如何使用访问令牌从许多 Google 服务中检索数据。似乎没有任何说明如何首先检查给定的访问令牌是否有效。
更新 令牌对 N 个 Google 服务有效。我无法针对 Google 服务尝试使用令牌来验证它,因为我不知道给定用户实际使用的所有 Google 服务的哪个子集。
此外,我永远不会使用 Google 身份验证访问令牌来访问任何 Google 服务,只是作为一种验证假定的 Google 用户实际上是他们所说的人的手段。如果有另一种方法可以做到这一点,我很乐意尝试。
authentication - 如何在我的网站上实现“使用 google 登录”?
在我的网站上,我想允许用户使用谷歌帐户登录。我打算使用 openid,但我想允许使用 google 登录,因为它有更多好处。过去我注意到一些能够使用 google (gmail) 帐户和 IIRC 登录的网站,尽管它们不支持 openID(但我可能是错的)。
如何实现“使用谷歌登录”?
openid - 将 OpenID 委托给 Google(不是 Google Apps)
是否可以使用我的个人网站/博客登录使用openid的网站,并委托给我的 Google 帐户?
好的,我在 SO 上搜索了这个问题,但没有好的答案。花了一些时间后,我想出了如何做到这一点。我将自己回答这个问题,以分享它。
java - 在java中获取谷歌的电子邮件/用户名?
是否可以检索我已使用 OAuth 成功验证的谷歌帐户的用户名?
我已经检索了用户访问令牌,但我想知道他们是否是一个 API 调用,我可以使用https://google.api/getUserName并将访问令牌传递给该调用并成功检索用户电子邮件/用户名?
在普通的 OAuth Web 服务中,您只需要秘密和 id 访问令牌来调用 Web 服务,但在 google 中,您也需要用户名。
有任何想法吗?
authentication - 授权 Google ToDo List (AuthToken, secid)
我正在尝试使用此网址访问 Google 的待办事项提要:
https://www.google.com/calendar/tdl?secid=<SECID>&tdl={%22action_list%22%3A[{%22action_type%22%3A%22get_all%22%2C%22action_id%22%3A%221%22%2C%22list_id%22%3A%2215052708471047222911%3A0%3A0%22%2C%22get_deleted%22%3Afalse}]%2C%22client_version%22%3A-1}
如果我在浏览器中使用正确的 secid 打开它,它会正确显示我想要的。
现在,问题是:我如何以编程方式(特别是在 java 程序中)获得 secid?我可以访问 authToken(来自 CalendarService),但我不知道如何使用它来授权我访问上面的 URL。
我尝试使用网址http://google.com/accounts/ServiceLogin,但没有找到任何示例。
请问有什么帮助吗?
security - Google 身份验证器可作为公共服务使用吗?
是否有用于在自运行(例如 LAMP 堆栈)网络应用程序上使用Google Authenticator (两因素身份验证)的公共 API?
oauth-2.0 - Google OAuth 2 授权 - 将代码交换为令牌
我正在尝试实施 Google OAuth 2 以访问 Google API。我遵循本指南,使用服务器端方案。
我在获取代码方面没有问题,服务器重定向到 localhost(这是目前重定向 URI 中唯一允许的服务器)。为了实现这一点,我去https://accounts.google.com/o/oauth2/auth?client_id=whatever.apps.googleusercontent.com&redirect_uri=http://localhost/&scope=https://www.google.com/m8/feeds/&response_type=code
页面。
然后,我尝试使用curl
(如指南)来测试 Google 的服务器是否使用访问令牌进行响应。但是,它似乎很难失败。我能得到的唯一回应是{"error":"invalid_client"}
。我确定我提供了 Google 希望我提供的所有内容 - 代码、客户端 ID、客户端密码、重定向 URI (localhost) 和grant_type=authorization_code
.
整个curl
命令行是:
我错过了什么吗?如何用代码交换访问令牌?
oauth - 为什么访问令牌会过期?
我刚刚开始使用 Google API 和 OAuth2。当客户授权我的应用程序时,我会获得一个“刷新令牌”和一个短暂的“访问令牌”。现在每次访问令牌过期时,我都可以将我的刷新令牌发布到 Google,他们会给我一个新的访问令牌。
我的问题是访问令牌过期的目的是什么?为什么不能只有一个持久的访问令牌而不是刷新令牌?
另外,刷新令牌是否过期?
有关 Google OAuth2 工作流程的更多信息,请参阅使用 OAuth 2.0 访问 Google API。
php - Google Calendar API v3 - 使用硬编码凭据进行身份验证
我正在编写一个 PHP 应用程序,它应该允许用户将某些事件添加到私人 Google 日历中。日历归我所有,我需要一种方法让 PHP 使用固定凭据与日历 API 进行通信(每个人都可以使用网站上的表单添加事件,但日历本身不公开可见)。
根据我的阅读,这可以在 v1 API 中使用 ClientLogin。但是,在 v3 API 中,可用的选项是 OAuth2.0 或 API 密钥。使用 API 密钥似乎不起作用,因为它只能用于不需要授权的请求,而且 OAuth 似乎也不正确,因为用户不应该访问自己的日历,但我的应用程序使用。
我考虑过以编程方式获取 OAuth 令牌,但这迟早会中断,因为 OAuth 对话框可以使用验证码。
这似乎是一个标准用例——一个允许用户以某些预定义方式与单个日历交互的 Web 应用程序——但我找不到任何关于如何在 v3 API 中实现它的文档。谁能帮我?
google-api - 我在哪里可以获得 Google 开发者密钥
我正在研究 Google API,例如聊天、联系人等...我被developer_key
gdata 文档中提到的那样卡住了。
您可以在https://code.google.com/apis/console获得此信息:
我已经:
在哪里可以找到开发者密钥?
我发现了这样的东西
但我知道这仅适用于 youtube。