Подтвердить что ты не робот

Не удается заставить диалоговое окно совместного использования 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();

Есть ли способ сделать эту работу с несколькими учетными записями, подписанными?

4b9b3361

Ответ 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 примечания к выпуску.