Доступ к API фотографий Google через Java - PullRequest
0 голосов
/ 11 октября 2018

Я очень плохо знаком с API Google, и у меня возникают проблемы с ним.Я читаю документацию Google photos API для Java , затем я создал учетные данные OAuth в консоли Google API и загрузил их (файл credentials.json).После этого я попытался получить доступ к фотографиям Google.Вот код из документации:

// Set up the Photos Library Client that interacts with the API
PhotosLibrarySettings settings =
   PhotosLibrarySettings.newBuilder()
  .setCredentialsProvider(
      FixedCredentialsProvider.create(/* Add credentials here. */)) 
  .build();

try (PhotosLibraryClient photosLibraryClient =
    PhotosLibraryClient.initialize(settings)) {

  // Create a new Album  with at title
  Album createdAlbum = photosLibraryClient.createAlbum("My Album");

  // Get some properties from the album, such as its ID and product URL
  String id = album.getId();
  String url = album.getProductUrl();

 } catch (ApiException e) {
    // Error during album creation
 }

Но я не понимаю, как создать Credentials объект для передачи его в метод FixedCredentialsProvider.create()

Не могли бы вы предоставить мне некоторыеобъяснение / ссылки по этому поводу?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы можете создать объект UserCredentials и передать его

UserCredentials.newBuilder()
        .setClientId("your client id")
        .setClientSecret("your client secret")
        .setAccessToken("Access Token")
        .build()

Перейти к ответу https://stackoverflow.com/a/54533855/6153171

Или проверить этот полный проект на github https://github.com/erickogi/AndroidGooglePhotosApi

0 голосов
/ 16 октября 2018

Вызов FixedCredentialsProvider.create(..) принимает com.google.auth.Credentials объект .Для API библиотеки Google Фото это должен быть объект UserCredentials, который можно создать UserCredentials.Builder, который является частью библиотеки Google OAuth .Там вы устанавливаете токен обновления, идентификатор клиента, секрет клиента и т. Д. Для инициализации учетных данных.Для получения токена обновления требуется, чтобы ваше приложение заполнило GoogleAuthorizationCodeFlow, который запрашивает у пользователя авторизацию и утверждение.

Вы можете проверить пример реализации на GitHub , но это соответствующий код:

  GoogleAuthorizationCodeFlow flow =
        new GoogleAuthorizationCodeFlow.Builder(
                GoogleNetHttpTransport.newTrustedTransport(),
                JSON_FACTORY,
                clientSecrets,
                selectedScopes)
            .setDataStoreFactory(new FileDataStoreFactory(DATA_STORE_DIR))
            .setAccessType("offline")
            .build();
    LocalServerReceiver receiver =
        new LocalServerReceiver.Builder().setPort(LOCAL_RECEIVER_PORT).build();
    Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");
    return UserCredentials.newBuilder()
        .setClientId(clientId)
        .setClientSecret(clientSecret)
        .setRefreshToken(credential.getRefreshToken())
        .build();

Есть несколько движущихся частей, но Google PhotosКлиентская библиотека API библиотеки работает с библиотекой аутентификации Google для обработки аутентификации OAuth.

...