Ошибка разрешений с Execution API из приложения Android

Я могу успешно получить быстрый запуск Execution API для работать для доступа к именам файлов.

Но расширение сценария быстрого запуска для использования функций электронной таблицы вызывает ошибку типа «Проблемы проверки подлинности не найдены».

Добавление DriveApp.getFilesByName() не вызывает проблем с правами доступа, именно добавление SpreadsheetApp.create() вызывает ошибку. При сохранении дополненного сценария выдается сообщение о том, что для сценария требуются дополнительные разрешения. Я пытался:

  • создание/сохранение нового/полного скрипта, чтобы все необходимые разрешения были установлены с первым экземпляром скрипта
  • удаление данных приложения в целевом объекте, чтобы принудительно предоставить новые разрешения
  • удаление приложения в целевом устройстве, чтобы принудительно предоставить новые разрешения
  • повторное создание нового ключа SHA1 и повторное использование нового ключа для повторного запуска процесса предоставления разрешений

Мой код:

function getFoldersUnderRoot() {
  var my_ss = "SDRP-Log-Test";
  var my_sheet = "month";
  var files = DriveApp.getFilesByName(my_ss);
  var file = !files.hasNext() ? SpreadsheetApp.create(my_ss) : files.next();
  var ss = SpreadsheetApp.openById(file.getId());

  var root = DriveApp.getRootFolder();
  var folders = root.getFolders();
  var folderSet = {};
  while (folders.hasNext()) {
    var folder = folders.next();
    folderSet[folder.getId()] = folder.getName();
  }
  return folderSet;
}

Я самостоятельно проверил, что сценарии электронной таблицы работают правильно через интерфейс разработки, поэтому сценарии работают.

build.gradle:

defaultConfig {
    applicationId "com.jackb.sdrp"
    minSdkVersion 16
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}

Платформа разработки:

  • Хост: Win10 и Android Studio 1.4 (текущее исправление)

Цель:

  • Samsung Galaxy S2 и Android 4.1.2
  • Samsung Galaxy S5 и Android 5.1.1

person jack bochsler    schedule 05.11.2015    source источник


Ответы (1)


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

Чтобы использовать API, вы должны предоставить действительный токен OAuth, который охватывает все области, используемые сценарием (а не только те, которые используются вызываемой функцией). Чтобы найти правильные области для включения в токен аутентификации, откройте проект в редакторе скриптов, затем выберите Файл > Свойства проекта и перейдите на вкладку Области.< href="https://developers.google.com/apps-script/guides/rest/api" rel="nofollow">ссылка

person Mogsdad    schedule 05.11.2015
comment
Спасибо @Mogsdad. Ответ был необходим, но недостаточен, часть, которую я не мог понять, заключалась в том, как предоставить дополнительные области, которые, как я определил, были добавлены к MainActiivty.java:private: static final String[] SCOPES = { "https://www.googleapis.com/auth/drive" }; Я ожидал, что свойство уровня приложения будет находиться в AndroidManifest .xml, build.gradle и т. д. и искал во всех неправильных местах. Я борюсь с документацией Google. - person jack bochsler; 07.11.2015