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;
}
Надеюсь, эта информация поможет.