Запуск Google Picker с токеном oAuth для автономного доступа

Чем я занимаюсь:

Я интегрирую Google Picker на свою страницу. Это позволит пользователям выбирать файлы со своего Google Диска для использования в веб-приложении. В приложении люди в группе используют общий диск Google (т.е. все они могут выбирать файлы из учетной записи [email protected]), который был создан администратором группы по его адресу электронной почты. Когда администратор регистрирует учетную запись, мы выполняем OAuth и получаем access_token с refresh_token для нашего приложения в Google (с включенным автономным доступом). Я планирую использовать access_token и refresh-token администратора в учетной записи другого пользователя группы, когда они попытаются использовать средство выбора для выбора файлов.

Что я сделал:

Я успешно интегрировал Google Picker в свое приложение, используя базовый код, представленный в документах. Затем, чтобы добиться того, чего я хотел, я удалил из примера кода следующий код:

gapi.load('auth', {'callback': onAuthApiLoad});

а также

function onAuthApiLoad() {
  window.gapi.auth.authorize(
    {
      'client_id': clientId,
      'scope': scope,
      'immediate': false
    },
    handleAuthResult);
}

а также

function handleAuthResult(authResult) {
  if (authResult && !authResult.error) {
    oauthToken = authResult.access_token;
    createPicker();
  }
}

и вместо .setOAuthToken(oauthToken) я передаю обновленный access_token напрямую в виде строки (я получаю это со своего сервера с помощью вызова ajax).

.setOAuthToken("<access_token>")

Но каждый раз, когда я звоню picker.setVisible(true);, я получаю экран в окне iframe с надписью Чтобы выбрать элемент из онлайн-хранилища, войдите в систему.

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

Проблема:


person Jehanzeb.Malik    schedule 14.12.2016    source источник
comment
Вы нашли какое-нибудь решение?   -  person ot954    schedule 03.01.2020
comment
@ ot954 Да, но это было 3 года назад. Я покопаюсь в своем репозитории, чтобы посмотреть, есть ли у меня этот код.   -  person Jehanzeb.Malik    schedule 07.01.2020
comment
Единственный способ узнать это - использовать скрипт приложения. Но все же я не совсем уверен, как обслуживать html из скрипта приложения Google. В моем случае я интегрировал пользовательский диск с моим приложением. После завершения интеграции средство выбора Google никогда не должно отображать этот вход.   -  person ot954    schedule 08.01.2020
comment
@ ot954 у тебя что-то получилось? Получение такой же проблемы   -  person aalimovs    schedule 07.12.2020


Ответы (1)


Попробуйте добавить sign in listener. Слушатели позволяют автоматически реагировать на изменения в сеансе входа текущего пользователя. Например, после того, как ваш метод запуска инициализирует объект auth2 для входа в Google, вы можете настроить слушателей для ответа на такие события, как изменения состояния auth2.isSignedIn или изменения в auth2.currentUser.

Проверка токена может быть возможной перед его использованием каждый раз, но это может добавлять много дополнительных накладных расходов для редкого варианта использования каждый раз, когда мы загружаем средство выбора и при вызове конечных точек API с токеном после проблемы повторной аутентификации, не было ключа о том, что токен недействителен. Вы можете проверить токен, отправив запрос веб-службы к конечной точке на сервере авторизации Google и выполнив сопоставление строк с результатами этого запроса веб-службы.

person Android Enthusiast    schedule 15.12.2016