Для наилучшего взаимодействия с пользователем при первоначальном входе пользователей следует запрашивать как можно меньше областей. Если основные функции вашего приложения не связаны со службой Google, конфигурация GoogleSignInOptions.DEFAULT_SIGN_IN
часто является всем, что вам нужно при входе в систему.
Если в вашем приложении есть функции, которые могут использовать данные Google API, но не являются обязательными для основных функций вашего приложения, вам следует разработать приложение таким образом, чтобы оно могло корректно обрабатывать случаи, когда данные 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
для более удобной проверки и получения набора разрешений.