Zusätzliche Bereiche anfordern

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

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. Beispielsweise können Sie die Berechtigung für den Zugriff auf das Google Drive-Konto des Nutzers nur dann anfordern, wenn der Nutzer zum ersten Mal auf die Schaltfläche „In Google Drive speichern“ tippt.

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

Für Nutzeraktionen erforderliche Berechtigungen anfordern

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 gewährt 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 übernommen wurden. Wenn 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.