Zusätzliche Bereiche anfordern

Für eine optimale Nutzererfahrung sollten Sie bei der ersten Anmeldung von Nutzern so wenig Bereiche wie möglich anfordern. Wenn die Hauptfunktion Ihrer App nicht an einen Google-Dienst gebunden ist, benötigen Sie für die Anmeldung häufig nur die GoogleSignInOptions.DEFAULT_SIGN_IN-Konfiguration.

Wenn Ihre App Funktionen hat, für die Google API-Daten genutzt werden können, die aber nicht für die Hauptfunktion der App erforderlich sind, sollten Sie Ihre App so gestalten, dass auch Fälle ohne Zugriff auf API-Daten problemlos verarbeitet werden können. So können Sie beispielsweise eine Liste der zuletzt gespeicherten Dateien ausblenden, wenn der Nutzer keinen Zugriff auf Drive gewährt hat.

Zusätzliche Bereiche, die Sie für den Zugriff auf Google APIs benötigen, sollten nur dann angefordert werden, wenn der Nutzer eine Aktion ausführt, für die Zugriff auf eine bestimmte API erforderlich ist. Beispielsweise können Sie die Berechtigung für den Zugriff auf das Drive-Konto eines Nutzers nur dann anfordern, wenn der Nutzer zum ersten Mal auf die Schaltfläche „In Google Drive speichern“ tippt.

So vermeiden Sie es, neue Nutzer zu überlasten oder zu verwirren, warum sie nach bestimmten Berechtigungen gefragt werden.

Für Nutzeraktionen erforderliche Berechtigungen anfordern

Wenn ein Nutzer eine Aktion ausführt, für die ein Bereich erforderlich ist, der bei der Anmeldung nicht angefordert wird, rufen Sie GoogleSignIn.hasPermissions auf, um zu prüfen, ob der Nutzer die erforderlichen Berechtigungen bereits gewährt hat. Falls nicht, rufen Sie GoogleSignIn.requestPermissions auf, um eine Aktivität zu starten, die die zusätzlichen erforderlichen Bereiche vom Nutzer anfordert.

Wenn ein Nutzer beispielsweise eine Aktion ausführt, für die Zugriff auf den Drive-App-Speicher erforderlich ist, gehen Sie so vor:

if (!GoogleSignIn.hasPermissions(
        GoogleSignIn.getLastSignedInAccount(getActivity()),
        Drive.SCOPE_APPFOLDER)) {
    GoogleSignIn.requestPermissions(
            MyExampleActivity.this,
            RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION,
            GoogleSignIn.getLastSignedInAccount(getActivity()),
            Drive.SCOPE_APPFOLDER);
} else {
    saveToDriveAppFolder();
}

Im onActivityResult-Callback Ihrer Aktivität können Sie prüfen, ob die erforderlichen Berechtigungen erfolgreich abgerufen wurden. Wenn ja, können Sie die Nutzeraktion ausführen.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == Activity.RESULT_OK) {
        if (RC_REQUEST_PERMISSION_SUCCESS_CONTINUE_FILE_CREATION == requestCode) {
            saveToDriveAppFolder();
        }
    }
}

Sie können auch eine GoogleSignInOptionsExtension an hasPermissions und requestPermissions übergeben, um eine Reihe von Berechtigungen bequemer zu prüfen und zu erhalten.