2016-06-14 2 views
2

Я пытался использовать Google Диск для синхронизации некоторых медиафайлов (видео/изображений) и показывать их в приложении для Android.Android Google Drive Rest API: экран разрешения пропуска (hardcoded account)

мне удалось сделать все это работать нормально но согласно документации (или, по крайней мере, с первого чтения), похоже, там всегда должен быть экран согласия, где пользователь, после выбора его Google аккаунт, соглашается с приложением, получающим данные с его диска.

Дело в том, что я хотел бы «жестко закодировать» учетную запись, которая с программным обеспечением согласна с этим, поскольку наше приложение всегда будет переносить средства массовой информации из одной учетной записи.

Возможно ли это?

PD: Не предлагайте какую-либо другую службу хранения данных, Drive является требованием клиента.

ответ

0

Наконец мне удалось заставить его работать вообще:

  1. Создание учетной записи учетных данныхслужбы от вашей консоли разработчика Google ,
  2. Загрузите свои учетные данные в формате json.
  3. Скопируйте файл в активы/res/raw.
  4. Переименуйте свой json во что-то без странных символов (Пример: driveserviceprivatekey.json).
  5. пункт Список

    InputStream privateJsonStream = dashboardActivity.getResources().openRawResource(R.raw.driveserviceprivatekey); 
        GoogleCredential serviceCredential = GoogleCredential.fromStream(privateJsonStream).createScoped(Arrays.asList(SCOPES)); 
    
  6. Теперь вы можете использовать службу привода следующим образом:

      HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
          JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
          this.mService = new com.google.api.services.drive.Drive.Builder(
         transport, jsonFactory, null) 
         .setHttpRequestInitializer(credential) 
         .build(); 
    
2

Чтобы избежать согласия пользователя, вы можете использовать Service Account.

В ссылке указано, что API Google, такие как API прогноза и Хранилище Google Cloud, могут действовать от имени вашего приложения без доступа к информации о пользователе. В этих ситуациях ваше приложение должно доказать свою личность API, но не требуется согласие пользователя. Аналогично, в корпоративных сценариях ваше приложение может запросить делегированный доступ к некоторым ресурсам.

Для этих типов взаимодействия между серверами вам нужен service account, который является учетной записью, принадлежащей вашему приложению, а не отдельным конечным пользователем. Ваше приложение вызывает API Google от имени учетной записи службы, а согласие пользователя не требуется. (В сценариях, не связанных с обслуживанием, ваше приложение вызывает API Google от имени конечных пользователей, и иногда требуется согласие пользователя.)

Вы также можете проверить эти связанные вопросы SO для получения дополнительной информации.

Смежные вопросы