Demander des champs d'application supplémentaires

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Pour une expérience utilisateur optimale, vous devez demander le moins de champs d'application possible lorsque vous vous connectez pour la première fois. Si la fonctionnalité de base de votre application n'est pas liée à un service Google, la configuration GoogleSignInOptions.DEFAULT_SIGN_IN est généralement suffisante pour vous connecter.

Si votre application dispose de fonctionnalités pouvant exploiter les données de l'API Google, mais qu'elles ne sont pas requises pour la fonctionnalité de base de votre application, vous devez concevoir celle-ci afin de pouvoir gérer les cas d'utilisation appropriés lorsque les données de l'API ne sont pas accessibles. Par exemple, vous pouvez masquer une liste de fichiers récemment enregistrés lorsque l'utilisateur n'a pas accordé l'accès à Drive.

Vous ne devez demander des champs d'application supplémentaires que vous n'avez besoin d'accéder aux API Google que lorsque l'utilisateur effectue une action nécessitant l'accès à une API particulière. Par exemple, vous pouvez demander l'autorisation d'accéder au Drive de l'utilisateur uniquement lorsqu'il appuie sur un bouton "Enregistrer dans Drive" pour la première fois.

En utilisant cette technique, vous pouvez éviter de surcharger les nouveaux utilisateurs ou d'induire en erreur les utilisateurs quant à la raison pour laquelle ils sont invités à donner certaines autorisations.

Demander les autorisations requises par les actions de l'utilisateur

Chaque fois qu'un utilisateur effectue une action nécessitant un champ d'application qui n'est pas demandé à la connexion, appelez GoogleSignIn.hasPermissions pour vérifier s'il a déjà accordé les autorisations requises. Si ce n'est pas le cas, appelez GoogleSignIn.requestPermissions pour lancer une activité qui demande à l'utilisateur les champs d'application supplémentaires requis.

Par exemple, si un utilisateur effectue une action nécessitant d'accéder à l'espace de stockage de son application Drive:

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 requises ont bien été acquises et, le cas échéant, effectuer 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 et requestPermissions pour vérifier et acquérir plus facilement un ensemble d'autorisations.