В настоящее время у нас имеется устаревшее настольное приложение, которое использует следующие пакеты для связи с хранилищем Google Диска.
- com.google.api.services.oauth2.Oauth2 (для проверки подлинности)
- com.google.api.services.drive.Drive (для связи с Google Диском)
Аутентификация
Так выглядит поток аутентификации
Как только поток успешен, мы получаем объект учетных данных
// flow is com.google.api.client.auth.oauth2.AuthorizationCodeFlow
// credential is com.google.api.client.auth.oauth2.Credential
Credential credential = flow.loadCredential(userId);
Тогда вот как мы используем Credential
, чтобы далее общаться с Google Drive
// service is com.google.api.services.drive.Drive
Drive service = new Drive.Builder(httpTransport, JSON_FACTORY, credential).setApplicationName("JStock").build();
Наш план - сохранить код аутентификации.Мы хотим удалить код Google Диска и перейти на наш собственный сервер облачного хранилища.
Наш новый сервер облачного хранилища построен с использованием описанного метода Google Sign-In для Android .в https://developers.google.com/identity/sign-in/android/backend-auth
Нам было интересно, можно ли использовать com.google.api.client.auth.oauth2.Credential
со стороны настольного клиента для связи с сервером, предназначенным для Google Sign-In для Android ?Если да, могу я узнать как?
В примере кода он использует следующий способ для передачи токена с мобильного клиента на внутренний сервер.
// Android code. googleSignInAccount is GoogleSignInAccount from GoogleSignIn API
String idToken = googleSignInAccount.getIdToken();
Ноа как насчет кода рабочего стола, который использует com.google.api.client.auth.oauth2.Credential
, правильно ли использовать следующий путь?
// credentials is com.google.api.client.auth.oauth2.Credential
// Is this a correct way, to pass the token to backend server?
// Is it equivalent to googleSignInAccount.getIdToken?
String idToken = credentials.getAccessToken()