Ответы пользователя по тегу API
  • Как синхронизовать файл через Google Drive API?

    SerJook
    @SerJook
    кодер
    Ну наверно надо начать с чтения документации Google Drive API.
    Логин и пароль вам не понадобятся.
    Аутентификация производится с помощью OAuth 2.0.
    Первое что вам нужно сделать, это создать приложение через Google API Console,получить реквизиты вашего приложения и подключить к нему Google Drive API.

    Один из способов аутентификации с использованием кода подтверждения я опишу ниже.

    1. Cначала открываете пользователю (в системном браузере) URL:
      https://accounts.google.com/o/oauth2/auth?scope={scope}&redirect_uri={redirect_uri}&response_type=code&client_id={client_id}

      (Это можно сделать с помощью метода QDesktopServices::openUrl
      где {scope} = "https://www.googleapis.com/auth/drive"
      {redirect_uri} = "urn:ietf:wg:oauth:2.0:oob"
      {client_id}= blablabla.apps.googleusercontent.com (айди вашего приложения)

      Пользователь подтверждает доступ и копирует код подтверждения.
      Вы предлагаете ввести код подтверждения в вашем приложении. Пользователь его вводит.

    2. Для получения access token нужно отправить POST запрос на сервер https://www.googleapis.com/oauth2/v3/token
      с параметрами:
      code - код подтверждения, введенный пользователем
      client_id - айди вашего приложения (blablabla.apps.googleusercontent.com)
      client_secret - секретный ключ вашего приложения
      redirect_uri - тот же самый redirect uri, что и в первом случае
      grant_type = "authorization_code"
      Запрос можно сделать с помощью qnetworkaccessmanager
      В ответе вы получаете access_token, который нужно будет использовать для запросов к Google Drive API.

      Также в ответе будет refresh_token, который нужен для обновления access_token.

    3. Чтобы создать папку, вам понадобится отправить POST запрос на URL:
      https://www.googleapis.com/drive/v3/files
      В заголовках запроса прописать:
      Authorization:  Bearer <полученный access_token>
      Content-Type: application/json


      В теле запроса отправить json:
      {
         "title": "Название папки"
         "mimeType":  "application/vnd.google-apps.folder"
      }

      В ответ вам придет json с ID папки.


      Как загрузить файл описано
    здесь
    Короче все элементарно.
    Ответ написан
    Комментировать
  • Из за чего возникает ошибка Unrecognized token 'storeId': was expecting ('true', 'false' or 'null') при попытке отправить POST запрос через CURL?

    SerJook
    @SerJook
    кодер
    Вы указываете Content-Type: application/json, а данные отправляете в формате application/x-www-form-urlencoded.
    Вам нужно использовать json_encode вместо http_build_query
    Ответ написан
    1 комментарий