java.io.IOException:从流读取凭据时出错,未指定“类型”字段

Ste*_*ela 8 google-authentication google-photos-api google-auth-library

我正在尝试使用我自己的帐户对 google photos api 中的 java 应用程序进行身份验证,但根据文档,该帐户不支持 service_account 。问题是 google-console 生成的用于 OAuth2 身份验证的文件不包含类型字段,只有通过为服务帐户创建凭据生成的文件才有效。

我尝试通过读取/不读取生成的文件来验证网络应用程序gcloud auth application-default login,该文件确实包含 type/client_id/client_secret/refresh_token。

例如:

        PhotosLibrarySettings settings =
                PhotosLibrarySettings.newBuilder()
                        .setCredentialsProvider(FixedCredentialsProvider.create(
                                GoogleCredentials.fromStream(
                                        new FileInputStream("credentials.json")
                                )))
                        .build();
Run Code Online (Sandbox Code Playgroud)

有什么想法可能有帮助吗?

小智 11

我在尝试使用 Google API for Calendar 时遇到了同样的问题。正如此处所解释的,您的 json 文件无效。他解释了如何使用“服务帐户密钥”凭证生成正确的 json。

我不知道这是否能解决你的问题,但对我来说没有。此类凭证需要 G Suite 帐户,这不是我想要的。我使用GoogleCredentials进行 OAuth2 身份验证,在我的 json 文件中,它唯一需要的是type、client_id、client_secretrefresh_token

类型接受“service_account”(对于 G Suit)和“authorized_user”(对于 OAuth2)。

  • 遇到了同样的问题,按照Caio提到的解决方案流程进行操作。如果您检查下载的 SA 密钥,它确实有一个类型条目。添加后,身份验证就顺利进行了。 (3认同)