Следуя примеру Realtime-Playground, я пытаюсь включить «открыть файл» в своем приложении. Авторизация работает корректно, на gDrive создается пустой файл. Хотя код создания всплывающего окна для выбора файла не работает. Следующий код является частью rt-playground, и я использую то же самое:
var popupOpen = function () {
var token = gapi.auth.getToken().access_token;
var view = new google.picker.View(google.picker.ViewId.DOCS);
view.setMimeTypes("application/vnd.google-apps.drive-sdk." + realTimeOptions.appId);
var picker = new google.picker.PickerBuilder()
.enableFeature(google.picker.Feature.NAV_HIDDEN)
.setAppId(realTimeOptions.appId)
.setOAuthToken(token)
.addView(view)
.addView(new google.picker.DocsUploadView())
.setCallback(openCallback)
.build();
picker.setVisible(true);
}
Я также подключил вышеуказанную функцию к кнопке. Когда я нажимаю кнопку перед авторизацией, я получаю следующую ошибку
TypeError: 'undefined' is not an object (evaluating 'gapi.auth.getToken')
Что, я думаю, является правильным поведением. Когда я нажимаю кнопку после авторизации, я получаю следующую ошибку:
Uncaught TypeError: Cannot read property 'View' of undefined
Ошибка исходит из этой строки кода:
var view = new google.picker.View(google.picker.ViewId.DOCS);
На моей странице index.html я добавил все скрипты, которые используются в rt-playground, и поскольку авторизация работает, я думаю, проблема не в этом. Любая обратная связь будет оценена.
Это мой код (используется для тестов, но отзывы приветствуются).
Ps: одна (из) вещей, которые я не уверен, правильно ли я устанавливаю appID. Посмотрев в консоли API, я не нашел ни одного атрибута с таким именем, поэтому попытался использовать идентификатор проекта и название продукта.
Обновить
Добавив google.load('picker', '1'); внутри моей страницы index.html это сработало. Хотя этот код не существует на игровой площадке в реальном времени, поэтому я не уверен, зачем мне его использовать.