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 Anwendung nicht an einen Google-Dienst gebunden ist, benötigen Sie für die Anmeldung in der Regel nur die GoogleSignInOptions.DEFAULT_SIGN_IN-Konfiguration.

Wenn Ihre App Funktionen enthält, für die Google API-Daten verwendet werden können, die aber nicht als Teil der Hauptfunktion erforderlich sind, sollten Sie Ihre App so konzipieren, dass sie auch Fälle verarbeiten kann, in denen API-Daten nicht zugänglich sind. Sie können 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, die Zugriff auf eine bestimmte API erfordert. Sie können beispielsweise 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 Drive speichern“ tippt.

Mit dieser Technik können Sie vermeiden, dass neue Nutzer überlastet oder verwirrt werden, 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 bereits die erforderlichen Berechtigungen erteilt hat. Ist dies nicht der Fall, rufen Sie GoogleSignIn.requestPermissions auf, um eine Aktivität zu starten, die die zusätzlichen erforderlichen Bereiche beim 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 erhalten wurden. Wenn ja, führen Sie die Nutzeraktion aus.

@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 ein GoogleSignInOptionsExtension-Objekt an hasPermissions und requestPermissions übergeben, um eine Reihe von Berechtigungen bequemer zu suchen und zu erhalten.