Когда пользователь нажимает кнопку «Создать» в пользовательском интерфейсе Drive и выбирает приложение в интерфейсе Drive, Drive перенаправляет пользователя на URL-адрес создания этого приложения, указанный в разделе «Настройка интеграции с пользовательским интерфейсом Drive» .
Затем ваше приложение получает набор переменных шаблона по умолчанию в параметре state . Информация state по умолчанию для нового URL-адреса выглядит следующим образом:
{
"action":"create",
"folderId":"FOLDER_ID",
"folderResourceKey":"FOLDER_RESOURCE_KEY",
"userId":"USER_ID"
}
В этот вывод включены следующие значения:
-
create: Выполняемое действие. Значениеcreate, когда пользователь нажимает кнопку «Создать» в пользовательском интерфейсе Google Drive . - FOLDER_ID : Идентификатор родительской папки.
- FOLDER_RESOURCE_KEY : Ключ ресурса родительской папки.
- USER_ID : Идентификатор профиля, однозначно идентифицирующий пользователя.
Ваше приложение должно выполнить этот запрос, следуя этим шагам:
- Убедитесь, что поле
actionимеет значение «create. - Используйте значение
userIdдля создания новой сессии для пользователя. Дополнительную информацию о вошедших в систему пользователях см. в разделе «Пользователи и новые события» . - Используйте метод
files.createдля создания файлового ресурса. Если в запросе был указанfolderId, присвойте полюparentsзначениеfolderId. - Если в запросе был указан параметр
folderResourceKey, установите заголовок запросаX-Goog-Drive-Resource-Keys. Дополнительную информацию о ключах ресурсов см. в разделе «Доступ к файлам, доступным по ссылкам, с помощью ключей ресурсов» .
Параметр state кодируется в формате URL, поэтому ваше приложение должно обрабатывать экранирующие символы и интерпретировать его как JSON.
Пользователи и новые события
Приложения Google Диска должны рассматривать все события «создание» как потенциальные входы в систему. У некоторых пользователей может быть несколько учетных записей, поэтому идентификатор пользователя в параметре state может не совпадать с текущей сессией. Если идентификатор пользователя в параметре state не совпадает с текущей сессией, завершите текущую сессию для вашего приложения и войдите в систему под запрошенным пользователем.