Не удается заставить диалоговое окно совместного использования API Диска Google работать при подписке на несколько учетных записей
У меня возникает ошибка JS при открытии диалога общего доступа в приложении Javascript с использованием API-интерфейсов Google Диска. Ошибка: Ошибка при сбое: ошибка синтаксиса: исключение DOM 12.
Однако диалог совместного доступа отлично работает, когда я выхожу из всех учетных записей Google, а затем вхожу только в одну учетную запись. Как только я войду во вторую учетную запись на новой вкладке, диалоговое окно общего доступа больше не работает и не работает с указанной выше ошибкой.
Это очень похоже на Вызов showSettingsDialog() на SDK Google Диска бросает Отказанный для отображения документа, потому что отображение запрещено с помощью X-Frame-Options. Тем не менее, я сделал отладку, показанную в принятом ответе, безрезультатно, а именно:
- URL-адрес, который вы установили в настройках вашего SDK Google Диска в консоли Google API, должен иметь тот же домен, что и страница, на которой вы используете диалог совместного доступа.
- В настоящее время вам необходимо, чтобы ваше приложение было установлено на вашем Google Диске для работы встраиваемого виджета. В настоящее время мы работаем над устранением этого ограничения, поскольку это не всегда имеет смысл, поскольку мы запустили v2 API.
Соответствующий код:
var shareClient = new gapi.drive.share.ShareClient(rtpg.realTimeOptions.appId);
shareClient.setItemIds([rtclient.params['fileId']]);
shareClient.showSettingsDialog();
Есть ли способ сделать эту работу с несколькими учетными записями, подписанными?
Ответы
Ответ 1
вы можете прочитать это внимательно в отношении проблемы с x-frame:
API Google Диска не может открывать диалоговое окно совместного доступа через JS (ошибка x-frame-options)
но я думаю, что невозможно одновременно аутентифицировать все учетные записи, но обходной путь может быть до setOAuthToken
для каждого из них каждый раз, когда вы хотите это сделать.
здесь в документах Google указано, что:
Важно: функция setOAuthToken позволяет приложению использовать текущий auth token, чтобы определить, какую учетную запись Google использует для выбора отобразить файлы. Если пользователь подписан в несколько учетных записей Google, это позволяет сборщику отображать файлы соответствующих авторизированная учетная запись.
Источник:
https://developers.google.com/drive/web/integrate-open
Ответ 2
Недавно мы добавили метод setOAuthToken()
к ShareClient
, который позволяет указать, какой пользователь должен использовать диалог. Более подробная информация в драйвере SDK примечания к выпуску.