Demander des champs d'application supplémentaires

Pour une expérience utilisateur optimale, demandez le moins de champs d'application possible lorsque lors de la connexion initiale des utilisateurs. Si la fonctionnalité de base de votre application n'est pas liée à service Google, la configuration GoogleSignInOptions.DEFAULT_SIGN_IN est souvent nécessaires à la connexion.

Si votre application dispose de fonctionnalités qui peuvent utiliser les données de l'API Google, mais qui ne sont pas requises par la fonctionnalité de base de votre application, vous devez la concevoir être capable de gérer efficacement les cas où les données de l'API ne sont pas accessibles. Par exemple : vous pouvez masquer la liste des fichiers récemment enregistrés lorsque l'utilisateur n'a pas accordé à Drive y accéder.

Vous ne devez demander des niveaux d'accès supplémentaires que pour accéder aux API Google Lorsque l'utilisateur effectue une action qui nécessite d'accéder à une API spécifique. Pour Par exemple, vous pouvez demander l'autorisation d'accéder au Drive d'un utilisateur uniquement lorsque l'utilisateur appuie sur "Enregistrer dans Drive" pour la première fois.

En utilisant cette technique, vous pouvez éviter de submerger les nouveaux utilisateurs ou d’induire en erreur aux utilisateurs pourquoi on leur demande certaines autorisations.

Demander les autorisations requises par les actions des utilisateurs

Chaque fois qu'un utilisateur effectue une action nécessitant un champ d'application qui n'est pas demandé au niveau se connecter, appeler GoogleSignIn.hasPermissions pour vérifier si l'utilisateur a déjà disposant des autorisations requises. Sinon, appelez le GoogleSignIn.requestPermissions. pour lancer une activité qui demande les niveaux d'accès supplémentaires requis utilisateur.

Par exemple, si un utilisateur effectue une action qui nécessite d'accéder à son Drive l'espace de stockage de votre application, procédez comme suit:

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();
}

Dans le rappel onActivityResult de votre activité, vous pouvez vérifier si les autorisations ont été acquises et, le cas échéant, effectuez l'action utilisateur.

@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();
        }
    }
}

Vous pouvez également transmettre un GoogleSignInOptionsExtension à hasPermissions. requestPermissions pour rechercher et acquérir un ensemble d'autorisations supplémentaires en toute simplicité.