Google RealTime API / Drive API -> получить роль пользователя для документа в реальном времени

У меня есть приложение в реальном времени, и я получаю doc.getCollaborators() и это дает мне массив [] doc от типа gapi.drive.realtime.Document:

введите описание изображения здесь

Согласно API Reference, здесь нет полей, подобных isOwner который показывает мне, является ли текущий соавтор владельцем документа в реальном времениdoc"

Мой вопрос, как я могу выяснить, какую роль сотрудники doc есть. В документации по API я нахожу: "Realtime API поддерживает роли владельца, читателя и автора"

Если я попытаюсь использовать gapi.client.drive.permissions.list Предложено из справочника API Google Drive:

    function retrievePermissions(fileId, callback) {
        var request = gapi.client.drive.permissions.list({
            'fileId': fileId
        });
        request.execute(function (resp) {
            callback(resp.items);
        });
    }


    retrievePermissions(self.realtimeDocId, function (resp) {
        resp;


        });

Затем я получаю следующее сообщение об ошибке:

Ошибка в обратном вызове загрузки в реальном времени: Ошибка типа: невозможно прочитать свойства "разрешения" неопределенного Ошибка типа: ошибка чтения свойства "разрешения" неопределенного

2 ответа

Чтобы использовать API накопителя, вы должны загрузить его отдельно от API реального времени.

window.gapi.client.load('drive', 'v3', function ()
{
    // Run your code here.
});

Получив список разрешений, вы можете использовать идентификатор разрешения для каждого пользователя, возвращенного из вашего вызова RealtimeDoc::getCollaborators.

Вы можете проверить, как вы размещаете свои коды, на основе документации вы можете интегрировать Realtime API в платформу Drive.

Документы в реальном времени прикрепляются к файлам, хранящимся на Google Диске. Соответственно, ваше приложение должно использовать Drive REST API для взаимодействия с файлами Drive. Например, чтобы создать новый файл, используйте files.insert метод из Drive REST API. Чтобы получить файл, который уже существует, используйте files.get метод.

Для получения дополнительной информации о взаимодействии с файлами в Google Drive см. Интеграция с Google Drive.

Что касается реализации кода, вы можете проверить совместимость CodeMirror с Google Drive Realtime Api.

Drive API:

/**
 * Creates a new Realtime file.
 * @param title {string} title of the newly created file.
 * @param callback {Function} the callback to call after creation.
 */
rtclient.createRealtimeFile = function(title, callback) {
  gapi.client.load('drive', 'v2', function() {
    gapi.client.drive.files.insert({
      'resource': {
        mimeType: rtclient.REALTIME_MIMETYPE,
        title: title
      }
    }).execute(callback);
  });
}

Для API реального времени:

// We have a file ID in the query parameters, so we will use it to load a file.
  if (fileId) {
    gapi.drive.realtime.load(fileId, this.onFileLoaded, this.initializeModel, handleErrors);
    return;
  }

Надеюсь, эта информация поможет.

Другие вопросы по тегам