StackOverflowError 在 com.google.auth.oauth2.GoogleCredentials.createScoped(GoogleCredentials.java:222)
StackOverflowError at com.google.auth.oauth2.GoogleCredentials.createScoped(GoogleCredentials.java:222)
下面的代码在执行时抛出这个错误:
Caused by: java.lang.WhosebugError
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"))
下面的代码在执行时抛出这个错误:
Caused by: java.lang.WhosebugError
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"))