Zugriff auf Nutzerdaten auf Android-Geräten autorisieren

Die Authentifizierung bestimmt, wer jemand ist, und wird im Allgemeinen als Nutzer bezeichnet zur Registrierung oder Anmeldung. Autorisierung ist der Vorgang zum Gewähren oder Ablehnen von Zugriffsrechten. auf Daten oder Ressourcen. Beispiel: Ihre App fordert die Einwilligung der Nutzer für auf das Google Drive-Konto des Nutzers zugreifen.

Authentifizierungs- und Autorisierungsaufrufe sollten zwei separate und eindeutige Aufrufe sein. je nach Anforderungen der Website oder App.

Wenn Ihre App Funktionen enthält, die Google API-Daten nutzen können, die aber die als Teil der Hauptfunktionen Ihrer App erforderlich sind, wenn API-Daten nicht zugänglich sind. Beispiel: Sie können eine Liste der zuletzt gespeicherten Dateien ausblenden, wenn der Nutzer Google Drive nicht zugestimmt hat Zugriff haben.

Sie sollten Zugriff auf Bereiche anfordern, die Sie nur für den Zugriff auf Google APIs benötigen Der Nutzer führt eine Aktion aus, die Zugriff auf eine bestimmte API erfordert. Für Sie sollten beispielsweise die Berechtigung für den Zugriff auf das Google Drive-Konto des Nutzers anfordern, wenn der Nutzer tippen auf „In Google Drive speichern“ Schaltfläche.

Wenn Sie die Autorisierung von der Authentifizierung trennen, oder Nutzer verwirren, weil sie nach bestimmten Berechtigungen.

In Google Identity Services erfolgt die Authentifizierung mithilfe des SignInClient. Für die Autorisierung von Aktionen, die Zugriff auf von Google gespeicherte Nutzerdaten erfordern, empfehlen die Verwendung von AuthorizationClient.

Für Nutzeraktionen erforderliche Berechtigungen anfordern

Wenn ein Nutzer eine Aktion ausführt, die zusätzlichen Umfang erfordert, rufen Sie AuthorizationClient.authorize()

Beispiel: Ein Nutzer führt eine Aktion aus, für die Zugriff auf sein Drive-Konto erforderlich ist. App-Speicher zu verwenden, gehen Sie so vor:

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

Im onActivityResult-Callback deiner Aktivität kannst du nachsehen, ob die erforderlichen Berechtigungen wurden erworben. Wenn ja, führen Sie die Nutzeraktion aus.

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