Авторизация личности Google (Android): как получить токен обновления?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Авторизация личности Google (Android): как получить токен обновления?

Сообщение Anonymous »

Я хочу добавить синхронизацию с Google Диском в свое (родное) приложение для Android — без использования серверной части (все будет происходить в приложении).
Как показано на рисунке В документации Google Identity я использую AuthorizationClient, чтобы получить токен доступа через AuthenticationResult:

Код: Выделить всё

List requestedScopes = Arrays.asList(DriveScopes.DRIVE_APPDATA);
AuthorizationRequest authorizationRequest = AuthorizationRequest.builder().setRequestedScopes(requestedScopes).build();
Identity.getAuthorizationClient(this)
.authorize(authorizationRequest)
.addOnSuccessListener(
authorizationResult -> {
if (authorizationResult.hasResolution()) {
// Access needs to be granted by the user
PendingIntent pendingIntent = authorizationResult.getPendingIntent();
try {
startIntentSenderForResult(pendingIntent.getIntentSender(), REQUEST_AUTHORIZE, null, 0, 0, 0, null);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "Couldn't start Authorization UI: " + e.getLocalizedMessage());
}
} else {
// Access already granted, continue with user action
saveToDriveAppFolder(authorizationResult);
}
})
.addOnFailureListener(e -> Log.e(TAG, "Failed to authorize", e));

Код: Выделить всё

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == MainActivity.REQUEST_AUTHORIZE) {
AuthorizationResult authorizationResult = Identity.getAuthorizationClient(this).getAuthorizationResultFromIntent(data);
saveToDriveAppFolder(authorizationResult);
}
}
А затем создайте на его основе экземпляр Диска:

Код: Выделить всё

Drive.Builder(
GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(),
HttpCredentialsAdapter(GoogleCredentials.create(AccessToken(authorizationResult.getAccessToken(), null)))
).build()
Пока все хорошо, все работает нормально, но поскольку AuthorizationResult не содержит токена обновления, как мне обрабатывать истечение срока действия токена доступа? Приложение должно синхронизироваться в фоновом режиме без какого-либо взаимодействия с пользователем, поэтому я не собираюсь снова запускать процесс авторизации (если, конечно, его не отзовут).
Я знаю, что getServerAuthCode( ) можно отправить на ваш сервер для запроса пары токенов доступа/обновления для доступа на стороне сервера, но мне не нужен (или даже не нужен) доступ к данным моего пользователя на стороне сервера.Я Я что-то пропустил?

Подробнее здесь: https://stackoverflow.com/questions/793 ... resh-token
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»