java - 无需用户交互的 Google Cloud OAuth 2.0 请求 token - Java

标签 java google-cloud-platform google-cloud-firestore google-cloud-functions

我正在研究一种从 GCP 读取内部进程日志文件的解决方案。但是,我在尝试为获取所需日志的请求生成身份验证 token 时遇到了困难。这更多的是一个流程\上下文问题,而不是我的代码有什么问题

我遇到的关键问题是我不想提示进行网络浏览器身份验证。我希望能够通过 API 请求来完成这一切,并且不需要用户交互。在我看过的所有地方以及我尝试过的所有实现中,我都会以某种方式提示用户交互,但这对于这个解决方案来说是不可行的。

如何实现这一目标?

我们没有启用 IAM,因此我无法生成 JWT token 。 我试图通过使用使用客户端 ID 和客户端 key 创建的服务帐户来执行此操作。

我尝试将“代码”传递到请求中以生成授权 token ,但这一直提示我在浏览器中进行用户授权,即使我添加查询参数“提示”或“approval_prompt”为无或强制。 我觉得我缺少一个能够实现这一流程的关键部分,任何帮助/指导将不胜感激。

最佳答案

有多种方法可以验证 API 调用。如果您想在没有用户交互的情况下执行此操作,则需要使用服务帐户(更多信息 here )。该过程如下:

You use the client ID and one private key to create a signed JWT and construct an access-token request in the appropriate format. Your application then sends the token request to the Google OAuth 2.0 Authorization Server, which returns an access token. The application uses the token to access a Google API. When the token expires, the application repeats the process.

为此,您可以使用客户端库,也可以直接使用 HTTP 请求手动执行此操作。在 docs有一个指南可以做到这一点。

关于java - 无需用户交互的 Google Cloud OAuth 2.0 请求 token - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59844391/

相关文章:

ssl - cffi.error.VerificationError( undefined symbol : SSLv2_client_method) when running Google Cloud Datalab notebook

google-cloud-platform - 使用 Google Pub/Sub 重放事件

javascript - Firestore 选择字段为空的位置

java - java中哪些数据结构支持排序/顺序

java - 构造函数后多次调用

java - 在没有 youtube 应用程序的情况下将 Youtube 视频集成到应用程序中

安卓 : Firestore component is not present

java - 在 Java 中处理 map 的 map

java - 如何从在 GKE 上运行的 Java 应用程序获取 GCP 错误报告(谷歌 kubernetes 引擎)

android - 将 Either<L,R> 与 Firestore 结合使用