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