Запрос дополнительных областей

Для обеспечения наилучшего взаимодействия с пользователем при первоначальном входе пользователей следует запрашивать как можно меньше областей. Если основные функции вашего приложения не привязаны к службе Google, конфигурация GoogleSignInOptions.DEFAULT_SIGN_IN часто является всем, что вам нужно при входе в систему.

Если в вашем приложении есть функции, которые могут использовать данные API Google, но не являются обязательными для его основных функций, вам следует спроектировать свое приложение таким образом, чтобы оно могло коррек��но обрабатывать случаи, когда данные API недоступны. Например, вы можете скрыть список недавно сохраненных файлов, если пользователь не предоставил доступ к Диску.

Вам следует запрашивать дополнительные области, необходимые для доступа к API Google, только тогда, когда пользователь выполняет действие, требующее доступа к определенному API. Например, вы можете запросить разрешение на доступ к Диску пользователя только тогда, когда пользователь впервые нажимает кнопку «Сохранить на Диск».

Используя этот метод, вы можете избежать перегрузки новых пользователей или запутывания их в том, почему у них запрашиваются определенные разрешения.

Запрос разрешений, необходимых для действий пользователя

Каждый раз, когда пользователь выполняет действие, требующее области, которая не запрашивается при входе, вызовите GoogleSignIn.hasPermissions , чтобы проверить, предоставил ли уже пользователь необходимые разрешения. Если нет, вызовите GoogleSignIn.requestPermissions , чтобы запустить действие, которое запрашивает у пользователя дополнительные необходимые области.

Например, если пользователь выполняет действие, требующее доступа к хранилищу приложений на Диске, выполните следующие действия:

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

В обратном вызове onActivityResult вашей активности вы можете проверить, были ли необходимые разрешения успешно получены, и если да, выполнить действие пользователя.

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

Вы также можете передать GoogleSignInOptionsExtension в hasPermissions и requestPermissions для более удобно�� пр��вер��и и получения набора разрешений.