Für eine optimale Nutzererfahrung sollten Sie beim ersten Anmelden von Nutzern so wenige Bereiche wie möglich anfordern. Wenn die Hauptfunktionen Ihrer App nicht an einen Google-Dienst gebunden sind, benötigen Sie bei der Anmeldung oft nur die GoogleSignInOptions.DEFAULT_SIGN_IN-Konfiguration.
Wenn Ihre App Funktionen hat, die Google API-Daten nutzen können, aber nicht für die Hauptfunktion Ihrer App erforderlich sind, sollten Sie Ihre App so konzipieren, dass sie Fälle, in denen API-Daten nicht zugänglich sind, problemlos verarbeiten kann. 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 Sie nur anfordern, wenn der Nutzer eine Aktion ausführt, für die Zugriff auf eine bestimmte API erforderlich ist. Sie können beispielsweise die Berechtigung für den Zugriff auf das Google Drive des Nutzers erst anfordern, wenn der Nutzer zum ersten Mal auf die Schaltfläche „In Drive speichern“ tippt.
So können Sie vermeiden, dass neue Nutzer überfordert werden oder dass Nutzer verwirrt sind, warum sie um bestimmte Berechtigungen gebeten werden.
Berechtigungen anfordern, die für Nutzeraktionen erforderlich sind
Immer 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 erteilt hat. Rufen Sie andernfalls GoogleSignIn.requestPermissions auf, um eine Aktivität zu starten, in der die zusätzlich erforderlichen Bereiche vom Nutzer angefordert werden.
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, 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 an hasPermissions und requestPermissions übergeben, um eine Reihe von Berechtigungen einfacher zu prüfen und zu erhalten.