3

Я создаю приложение, которое должно иметь доступ к Google Диску и Google Таблицам. Я хочу, чтобы пользователь перешел в https://mydomain.appspot.com/authenticate, чтобы пройти через поток входа в Google и пройти проверку подлинности, чтобы бэкэнд получал токены доступа как для Google Диска, так и для Google Таблиц.Долгосрочный токен доступа для Google OAuth 2.0

После этого я хочу, чтобы бэкэнд мог получить доступ к Дисководам и таблицам без взаимодействия с пользователем. Например, я хотел бы, чтобы запланированная задача запускалась каждый час и извлекала некоторые данные с Диска и Таблиц. Я хочу, чтобы бэкэнд использовал маркер, полученный, когда пользователь аутентифицировал себя.

Возможно ли это? Я очень на это надеюсь. Я смотрю здесь, и я действительно не нахожу ничего, что могло бы мне помочь. https://developers.google.com/sheets/api/guides/authorizing

Бэкэнд разработан на Java и развернут в Google App Engine.

ответ

2

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

Примечание: Не заставляйте себя отслеживать с помощью обслуживаемых счетов, это не то же самое. Вы можете запускать автоматические скрипты с использованием токена обновления, полученного от Oauth2, терминология googles немного запутанна.

Ознакомьтесь с официальной клиентской библиотекой google java, и она должна обрабатывать большую часть ее для вас. Using OAuth 2.0 with the Google API Client Library for Java

+0

Похоже, нам нужно обновлять токен доступа каждый час. Срок действия токена доступа составляет 3600 секунд. –

0

Вам нужно настроить автономный доступ, как это определенно в: https://developers.google.com/identity/protocols/OAuth2WebServer#offline

После грантов пользователя автономного доступа к запрашиваемым областям, вы можете продолжать использовать клиент API для доступа к API Google от имени пользователя, когда Пользователь не в сети. Клиентский объект обновит токен доступа по мере необходимости.