Für eine optimale Nutzerfreundlichkeit sollten Sie bei der ersten Anmeldung möglichst wenige Bereiche anfordern. Wenn die Hauptfunktionen Ihrer App nicht an einen Google-Dienst gebunden sind, ist für die Anmeldung oft nur die Konfiguration GoogleSignInOptions.DEFAULT_SIGN_IN
erforderlich.
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 Fälle problemlos bewältigen kann, wenn auf API-Daten nicht zugegriffen werden kann. Beispielsweise können Sie eine Liste mit kürzlich gespeicherten Dateien verbergen, wenn der Nutzer Drive-Zugriff nicht gewährt hat.
Sie sollten nur dann zusätzliche Bereiche anfordern, die Sie für den Zugriff auf Google APIs benötigen, wenn der Nutzer eine Aktion ausführt, die Zugriff auf eine bestimmte API erfordert. Sie können beispielsweise eine Berechtigung anfordern, um nur dann auf Google Drive zuzugreifen, wenn der Nutzer zum ersten Mal auf die Schaltfläche „In Google Drive speichern“ tippt.
Mit dieser Technik können Sie verhindern, dass neue Nutzer überfordert oder Nutzer verwirrt werden, weil sie um bestimmte Berechtigungen gebeten werden.
Für Nutzeraktionen erforderliche Berechtigungen anfordern
Jedes Mal, wenn ein Nutzer eine Aktion ausführt, für die ein Bereich erforderlich ist, der bei der Anmeldung nicht angefordert wird, sollten Sie GoogleSignIn.hasPermissions
aufrufen, um zu prüfen, ob der Nutzer die erforderlichen Berechtigungen bereits gewährt hat. Wenn nicht, rufen Sie GoogleSignIn.requestPermissions
auf, um eine Aktivität zu starten, die die zusätzlich erforderlichen Bereiche vom Nutzer anfordert.
Wenn ein Nutzer beispielsweise eine Aktion ausführt, die Zugriff auf den Drive-App-Speicher benötigt, 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 gewährt 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
-Anfrage an hasPermissions
und requestPermissions
übergeben, um die Berechtigungsgruppe einfacher zu ermitteln und zu erwerben.