Создание файла на Google Drive через API

Работа с API гугл — это ещё та головоломка, тут переплетены и вечно обновляемые версии API, не прозрачные процедуры авторизации и запутанная консоль разработчика. Сколько уж я писал этих интеграций с гугл, каждый раз охота плеваться.

Но в сторону эмоции, разберем по шагам сохранение файла на диске гугл.

Ожидаемый результат: код на php отправляет данные через API Google Drive, используя сервисную учетную запись, а пользователь Google Drive видит новый файл, который был расшарен сервисной учетной записью.

Библиотеки интеграции

Весь обмен на низким уровне уже реализован компанией Google. Они предоставляют библиотеки для всех разработчиков на разных языках программирования. Нам нужны на PHP.

Авторизация

Чтобы отправлять какие то запросы, нам требуется авторизация. Google Drive API не позволяется использовать авторизацию по API ключу, потому нужно использовать что то более сложное.

Мой выбор — использование ключа сервисной учетной записи. Но обо всём по порядку.

Шаг 1: Создайте приложение в консоли разработчика Google.

Шаг 2: Создайте сервисную учетную запись для этого приложения.

Перейдите к реквизитам приложения:

Там выберите создать реквизиты, тип — сервисный аккаунт:

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

Когда сервисная учетка готова, нам потребуется создать приватный ключ.

Во вкладке KEYS — выберите ADD KEY и тип ключа JSON. При создании, гугл выгрузит вам файл ключа. Это не заметный процесс, причем на столько, что многие не понимают: что же потом делать с ключами, так как единственная доступная опция — это удалить ключ, а имя ключа нигде не используется.

В общем, повторно скачать данные ключа в виде JSON файла уже будет нельзя, потому не потеряйте файл :).

Шаг 3. Скачайте или установите в проект (если используете composer) библиотеку от гугл:

Шаг 4: Авторизация в коде.

Библиотеки подключены, JSON файл скачан, как это использовать в коде?

Я подключаю файл ключа (GOOGLE-KEY-FILE.json), который сохранил ниже DOCUMENT_ROOT. Вы можете посмотреть, что находится в файле — а это просто JSON-encoded массив переменных. Этот массив можно объявить в коде и передать его вместо имени файла. Так тоже будет работать.

Создание файла на Google Drive

Дальше мы создаём файл. В моём примере это текстовый файл. При этом я конвертирую его сразу же в формат Google Drive Document, чтобы с ним было удобно работать средствами гугл диска.

Если конвертировать вам не нужно, то используйте другой код:

Выдать разрешение основному пользователю

После этих манипуляций, файл будет создан, но вы не увидите его из под основной учетной записи, т.к. создан он с использованием служебной (service account).

Нужно «расшарить» файл, выдав соответствующие права.

В данном примере права на запись будут выданы пользователю vasya@google.com. Файл станет доступен Васе в разделе «shared with me».

Написать комментарий

 

Комментарии к «Создание файла на Google Drive через API»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: