Zusätzliche Bereiche anfordern

Für eine optimale Nutzererfahrung sollten Sie bei der Erstanmeldung von Nutzern so wenige Bereiche wie möglich anfordern. Wenn die Hauptfunktionen Ihrer App nicht an einen Google-Dienst gebunden sind, ist die GoogleSignInOptions.DEFAULT_SIGN_IN-Konfiguration bei der Anmeldung oft ausreichend.

Wenn Ihre App Funktionen hat, die Google API-Daten nutzen können, aber nicht zu den Hauptfunktionen Ihrer App gehören, sollten Sie Ihre App so gestalten, dass sie auch dann ordnungsgemäß funktioniert, wenn kein Zugriff auf API-Daten möglich ist. So können Sie beispielsweise eine Liste der zuletzt gespeicherten Dateien ausblenden, wenn der Nutzer keinen Drive-Zugriff gewährt hat.

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

So können Sie verhindern, dass neue Nutzer überfordert werden oder nicht verstehen, warum sie um bestimmte Berechtigungen gebeten werden.

Berechtigungen anfordern, die für Nutzeraktionen erforderlich sind

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

Wenn ein Nutzer beispielsweise eine Aktion ausführt, für die Zugriff auf den Speicherplatz seiner Drive App 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 deiner Aktivität kannst du prüfen, ob die erforderlichen Berechtigungen erfolgreich abgerufen wurden. Falls ja, kannst du 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 Berechtigungen einfacher zu prüfen und abzurufen.