java - com.google.auth.oauth2.GoogleCredentials.createScoped 处出现 StackOverflowError(GoogleCredentials.java :222)

标签 java google-cloud-platform google-photos-api

下面的代码在执行时抛出此错误:

Caused by: java.lang.StackOverflowError
    at com.google.auth.oauth2.GoogleCredentials.createScoped(GoogleCredentials.java:222)

这段代码可能有什么问题:

public static void uploadToGooglePhotos(File uploadFile) throws Exception {
    try {
        InputStream stream = new ByteArrayInputStream(GoogleJsonKey.JSON_KEY.getBytes(StandardCharsets.UTF_8));
        GoogleCredentials credentials = GoogleCredentials.fromStream(stream)
                .createScoped("https://www.googleapis.com/auth/cloud-platform");
        credentials.refreshIfExpired();
        PhotosLibrarySettings settings =
                PhotosLibrarySettings.newBuilder()
                        .setCredentialsProvider(FixedCredentialsProvider.create(credentials))
                        .build();
        PhotosLibraryClient photosLibraryClient =
                PhotosLibraryClient.initialize(settings);
        UploadMediaItemRequest uploadRequest =
                UploadMediaItemRequest.newBuilder()
                        .setFileName(uploadFile.getName())
                        .setDataFile(new RandomAccessFile(uploadFile.getAbsolutePath(), "r"))
                        .build();
        UploadMediaItemResponse uploadResponse = photosLibraryClient.uploadMediaItem(uploadRequest);
        if (uploadResponse.getError().isPresent()) {
            UploadMediaItemResponse.Error error = uploadResponse.getError().get();
        } else {
            String uploadToken = uploadResponse.getUploadToken().get();
        }
    } catch (ApiException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

}

最佳答案

您可以尝试以下操作吗:

GoogleCredentials credentials = GoogleCredentials.fromStream(stream).createScoped(Collections.singleton("https://www.googleapis.com/auth/cloud-platform"))

关于java - com.google.auth.oauth2.GoogleCredentials.createScoped 处出现 StackOverflowError(GoogleCredentials.java :222),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60474325/

相关文章:

java - 为ImageView创建 "like/unlike"功能

java - 蓝湾 : check if device is paired?

google-cloud-platform - terraform 中的 GCP 身份验证

google-apps-script - 如何使用 Google 相册 API 方法 : mediaItems. 在 Google 应用脚本中搜索电子表格

google-photos-api - 有没有办法通过 Google Photos API 使用高质量模式?

java - 如何提取下面的数据并显示在另一个文件中

java - 在 JPA 2 中,使用 CriteriaQuery,如何计算结果

oauth-2.0 - 未定义身份验证 session

kubernetes - 如何禁用 Stackdriver 日志记录?

python - 如何获取 Google App Engine 上 Python FastAPI 脚本的 CPU 和内存使用情况