google realtime api / drive api -> получить роль пользователя для документа в реальном времени

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

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

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

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

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

    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;


        });

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

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


person Viktor Carlson    schedule 20.02.2017    source источник


Ответы (2)


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

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

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

person Grant Watters    schedule 21.02.2017

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

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

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

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

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;
  }

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

person Mr.Rebot    schedule 21.02.2017