StackOverflowError at com.google.auth.oauth2.GoogleCredentials.createScoped (GoogleCredentials. java: 222) - PullRequest
0 голосов
/ 01 марта 2020

Приведенный ниже код выдает эту ошибку при выполнении:

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();
    }

}

1 Ответ

1 голос
/ 01 марта 2020

Можете ли вы попробовать следующее:

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