Google Identity Authorization (Android): Wie erhalte ich ein Aktualisierungstoken?Android

Forum für diejenigen, die für Android programmieren
Guest
 Google Identity Authorization (Android): Wie erhalte ich ein Aktualisierungstoken?

Post by Guest »

Ich bin bereit, meiner (nativen) Android-App eine Art Google Drive-Synchronisierung hinzuzufügen – ohne Backend (alles geschieht in der App).
Wie in der zu sehen In der Google Identity-Dokumentation verwende ich einen AuthorizationClient, um über das AuthenticationResult ein Zugriffstoken zu erhalten:

Code: Select all

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));

Code: Select all

@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);
}
}
Und dann daraus eine Drive-Instanz erstellen:

Code: Select all

Drive.Builder(
GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(),
HttpCredentialsAdapter(GoogleCredentials.create(AccessToken(authorizationResult.getAccessToken(), null)))
).build()
So weit, so gut, alles funktioniert gut, aber da AuthorizationResult kein Aktualisierungstoken enthält – wie soll ich mit dem Ablauf des Zugriffstokens umgehen? Die App soll im Hintergrund ohne Benutzerinteraktionen synchronisiert werden, daher werde ich den Autorisierungsfluss nicht erneut starten (es sei denn, er wird natürlich widerrufen).
Mir ist bekannt, dass getServerAuthCode( ) könnte an Ihr Backend gesendet werden, um ein Paar Zugriffs-/Aktualisierungstoken für den serverseitigen Zugriff anzufordern, aber ich muss (oder möchte) nicht serverseitig auf die Daten meines Benutzers zugreifen.Vermisse ich? etwas?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post