如何验证 Google 身份验证 API 访问令牌?

2023-12-11

如何验证 Google 身份验证访问令牌?

我需要以某种方式查询谷歌并询问:[给定的访问令牌]对[有效吗?[电子邮件受保护]] 谷歌帐号?

简洁版本

很清楚如何通过Google 身份验证 Api :: Web 应用程序的 OAuth 身份验证然后可用于从一系列 Google 服务请求数据。目前尚不清楚如何检查给定的访问令牌对于给定的 Google 帐户是否有效。我想知道怎么做。

长版

我正在开发一个使用基于令牌的身份验证的 API。提供有效的用户名+密码或从任何一项N可验证服务提供第三方令牌后,将返回令牌。

第三方服务之一是 Google,允许用户使用他们的 Google 帐户对我的服务进行身份验证。稍后将扩展到包括雅虎帐户、受信任的 OpenID 提供商等。

基于Google的访问示意图示例:

alt text

“API”实体处于我的完全控制之下。 “公共界面”实体是任何基于网络或桌面的应用程序。一些公共接口在我的控制之下,另一些则不会,还有一些我可能永远不知道。

因此,我无法信任第 3 步中提供给 API 的令牌。该令牌将与相应的 Google 帐户电子邮件地址一起提供。

我需要以某种方式查询谷歌并询问:此访问令牌是否有效[电子邮件受保护]?

在这种情况下,[电子邮件受保护]是 Google 帐户唯一标识符 - 用户用来登录其 Google 帐户的电子邮件地址。这不能被假定为 Gmail 地址 - 某人可以拥有 Google 帐户而无需 Gmail 帐户。

Google 文档清楚地说明了如何使用访问令牌从许多 Google 服务中检索数据。似乎没有任何内容说明如何首先检查给定的访问令牌是否有效。

Update该令牌对 N 个 Google 服务有效。我无法尝试针对 Google 服务使用令牌作为验证它的方法,因为我不知道给定用户实际使用所有 Google 服务的哪个子集。

此外,我永远不会使用 Google 身份验证访问令牌来访问任何 Google 服务,而只是作为验证假定的 Google 用户是否确实是他们所说的身份的一种手段。如果有其他方法可以做到这一点,我很乐意尝试。


对于用户检查,只需发布 获取访问令牌作为 accessToken 并将其发布并获取响应

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=accessToken

您可以尝试在浏览器的地址栏中使用 httppost 和 java 中的响应

反应会像

{
     "issued_to": "xxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
     "audience": "xxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
     "user_id": "xxxxxxxxxxxxxxxxxxxxxxx",
     "scope": "https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com",
     "expires_in": 3340,
     "access_type": "offline"
    }

范围是accessToken的给定权限。您可以检查范围 ID这个链接

Update:新的API 帖子如下

https://oauth2.googleapis.com/tokeninfo?id_token=XYZ123

响应将如下

 {
 // These six fields are included in all Google ID Tokens.
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "iat": "1433978353",
 "exp": "1433981953",

 // These seven fields are only included when the user has granted the "profile" and
 // "email" OAuth scopes to the application.
 "email": "[email protected]",
 "email_verified": "true",
 "name" : "Test User",
 "picture": "https://lh4.googleusercontent.com/-kYgzyAWpZzJ/ABCDEFGHI/AAAJKLMNOP/tIXL9Ir44LE/s99-c/photo.jpg",
 "given_name": "Test",
 "family_name": "User",
 "locale": "en"
}

欲了解更多信息,https://developers.google.com/identity/sign-in/android/backend-auth

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何验证 Google 身份验证 API 访问令牌? 的相关文章

  • 如何在使用 Web 服务时获取会话对象?

    如何在使用 Web 服务时获取会话对象 服务在两个程序之间调用 如何在使用 Web 服务时获取用户会话对象 不可能使用请求对象获取会话 因为当我们谈论服务时不会有请求或响应 如果您正在与JAX WS https jax ws dev jav
  • 在服务器内部调用 Web 服务

    我有一个网络服务 getEmployee 当传递 id 时 它会获取单个员工的员工详细信息 同一服务器上的另一个 Web 服务 getEmployeeList 当传递一个部门时 它会获取整个员工列表 这将获取部门的 ID 然后调用 getE
  • 使用标志来识别口语

    在我正在做的网络应用程序中 我需要识别人们所说的语言 我想使用标志来做到这一点 但我有一些问题 例如 如果您说法语 则可以放置法国国旗 但如果您说英语 您可以放置 美国或英国国旗或两者的混合 阿拉伯语选择哪个标志 沙特阿拉伯国旗 阿尔及利亚
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • 无法将“RSACng”类型的对象转换为“System.Security.Cryptography.RSACryptoServiceProvider”类型

    我得到了这个异常 无法将 RSACng 类型的对象转换为 System Security Cryptography RSACryptoServiceProvider 类型 调用这个方法 GoogleCredential cred Googl
  • 使用 Swift 访问 Twitter

    我正在使用 Swifter 库在我的 Swift iOS 8 应用程序中访问 Twitter https github com mattdonnelly Swifter https github com mattdonnelly Swift
  • 解析express应用程序中的url哈希片段

    我正在编写一个快速应用程序 我必须使用 oauth 2 0 流程对用户进行身份验证 我已成功将用户重定向到 oauth 提供程序 并且提供程序在 oauth 回调中发送访问令牌 就像是 http localhost 4000 oauth c
  • OAuth2 - 无需用户交互即可授权

    因此 我尝试通过外部应用程序的 API 访问我自己的数据 我只需要访问我自己的数据 不尝试从我的任何用户帐户接收数据 因此他们不需要授权任何内容 显然我需要避免任何重定向 随着我对 OAuth 的研究越多 这似乎是标准流程 该过程被击中 a
  • 我应该使用 Web API 还是 Web 方法?

    我正在尝试了解 Web api 和一些有关 Web 方法的新闻 我听说我们应该停止使用一些来源的 Web 方法 此外 如果不再使用 Web 方法 Web API 是否会成为继任者 Web 方法是 ASMX 技术的一部分 ASMX 是一项遗留
  • 使用 google gdata 客户端 API 从 Java/Scala 进行 OAuth2 授权

    您将如何执行与 执行 OAuth 2 0 小节中的 Google Net 示例 https developers google com google apps spreadsheets 使用等效的 Java api 我尝试使用 Java a
  • 用于测试肥皂客户端的公共免费网络服务[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 有没有公 开的SOAP 1 2 http en wikipedia org wiki SOAP protocol WSDL 2 0 http en w
  • 浏览器回调和 Android Activity 堆栈疯狂

    我正在努力使用普遍存在的回调和自定义方案 gt intent filter 技术来获得 OAuth 授权的特定行为 我的应用程序注册 SEND 操作 并在调用时启动一项服务 该服务依次检查用户是否已获得授权 如果没有 则生成一个活动 OAu
  • Facebook 错误代码列表?

    在哪里可以找到 Facebook 错误代码的完整列表 在我的应用程序统计信息中 有一些 1340004 错误 Method dialog oauth touch Error Code 1340004 Failures 436 Sampled
  • Google 登录服务器验证码无 iOS?

    我们让 Google 登录您的应用程序 我们在请求登录时提供服务器客户端 ID 我们得到的 user serverAuthCode 为 nil 我们的要求如下 func googleLogin var configureError NSEr
  • 即使单击“允许”后,也会出现“执行该操作需要授权”消息

    我最近遇到了一个授权新的 Google App Script 项目的问题 特别是使用 Cloud SQL 管理 API 的项目 相同的代码存在于之前授权的 GAS 项目中并且工作正常 但是如果我获取 GAS 项目的副本并尝试第一次运行某个函
  • 如何获取发送的 PHP 卷曲请求的信息

    我正在尝试调试对 Web 服务 getToken 端点的curl 请求 我不能 100 确信 URL 和身份验证信息已正确写入curl 句柄 我正在尝试使用curl getinfo ch CURLINFO HEADER OUT 捕获发送的请
  • 分析多层、分布式 Web 应用程序(服务器端)

    我想profile http en wikipedia org wiki Profiling 28computer programming 29来自服务器 PoV 的复杂 Web 应用程序 根据上面的维基百科链接和堆栈溢出profiling
  • 两条腿的 OAuth 和 Gmail Atom feed

    我们正在尝试让 2 legged OAuth 与 Gmail Atom feed 一起使用 我们使用 John Kristian Praveen Alavilli 和 Dirk Ba lfanz 贡献的 Java 库 http oauth
  • Java:简单 XML 序列化 (simple-xml-2.6.6.jar) 给出包含 的 XML 文件错误

    我正在使用简单 XML 序列化 simple xml 2 6 6 jar here http simple sourceforge net 将我的 XML 响应从 webservice 转换为 POJO 类 XML 是
  • YouTube api 的永久访问令牌?

    我已经浏览了用于身份验证的 Oauth 和 AuthSub 方法的 google 文档 并且我尝试通过 google 搜索此内容 但没有结果 对于 Facebook 您可以请求长度为 的访问令牌lifetime 这意味着您不必每隔几周就请求

随机推荐