3

Есть ли способ запросить офлайн-доступ с помощью сервисов Google play sdk на Android? Я знаю, что raw HTTP api имеет возможность сделать это, запросив токен обновления, но не смог найти способ сделать это через новый Google Play services sdk.Службы Google play sdk: запрос на автономный доступ во время авторизации

Новый sdk предоставляет приложению токен доступа с использованием метода GoogleAuthUtil.getToken(), но токен доступа истекает каждый час. Я мог бы сделать необработанный http-запрос и войти в систему с веб-представления или браузера, но предпочел бы, чтобы сделать это изначально с помощью sdk, так как это намного лучший опыт для пользователя.

ответ

1

Поиск документов Google рядом и далеко, похоже, это возможно. Google называет эту «идентификацию кросс-клиента» под ее категорией "Hybrid Apps".

Вы можете, по-видимому, массировать строку для параметра области, которую вы передаете в метод GoogleAuthUtil.getToken(...), чтобы уговорить его вернуть «Авторизованный код», а не токен OAuth2. (Для разницы между ними я нашел this chart.)

Подробности: here, в частности последний раздел под названием "Android app obtains offline access for Web back-end".

Кажется, вам необходимо перейти в следующую строку как "область видимости" в getToken:

oauth2:server:client_id:<your_server_client_id>:api_scope:<scope_url_1> <scope_url_2> ... 

Док затем утверждает, что это:

В этом случае, GoogleAuthUtil.getToken () сначала потребует, чтобы пользователь разрешил этот проект для доступа к двум областям. Предполагая, что это нормально, он вернется, а не токен OAuth, но недействительный код авторизации , который можно обменять на токен и токен обновления.

Отказ от ответственности: Я еще не пробовал это; наш разработчик Android скоро. Пожалуйста, сообщите, работает ли это для вас.