En iyi kullanıcı deneyimi için, kullanıcılar ilk kez oturum açtığında mümkün olduğunca az kapsam isteğinde bulunmanız gerekir. Uygulamanızın temel işlevselliği bir Google hizmetine bağlı değilse oturum açarken genellikle GoogleSignInOptions.DEFAULT_SIGN_IN yapılandırması yeterlidir.
Uygulamanızda Google API verilerinden yararlanabilen ancak uygulamanızın temel işlevselliği için gerekli olmayan özellikler varsa uygulamanızı, API verilerine erişilemediği durumları sorunsuz bir şekilde işleyebilecek şekilde tasarlamanız gerekir. Örneğin, kullanıcı Drive'a erişim izni vermediğinde yakın zamanda kaydedilen dosyaların listesini gizleyebilirsiniz.
Google API'lerine erişmek amacıyla ihtiyacınız olan ek kapsamlar için, yalnızca kullanıcının belirli bir API'ye erişim gerektiren bir işlem gerçekleştirdiği durumlarda erişim isteğinde bulunmalısınız. Örneğin, kullanıcının Drive'ına erişmek için yalnızca kullanıcı ilk kez "Drive'a kaydet" düğmesine dokunduğunda izin isteyebilirsiniz.
Bu teknikten yararlanarak yeni kullanıcılar için süreci kolaylaştırabilir veya kullanıcıların neden belirli izinler istendiği konusunda kafa karışıklığı yaşanmasını önleyebilirsiniz.
Kullanıcı işlemlerinin gerektirdiği izinleri isteme
Kullanıcı, oturum açma sırasında istenmeyen bir kapsam gerektiren bir işlem gerçekleştirdiğinde, kullanıcının gerekli izinleri daha önce verip vermediğini kontrol etmek için GoogleSignIn.hasPermissions işlevini çağırın. Aksi takdirde, kullanıcıdan gerekli ek kapsamları isteyen bir etkinlik başlatmak için GoogleSignIn.requestPermissions işlevini çağırın.
Örneğin, bir kullanıcı Drive uygulama depolama alanına erişim gerektiren bir işlem yaparsa şunları yapın:
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();
}
Etkinliğinizin onActivityResult geri çağırmasında, gerekli izinlerin başarıyla alınıp alınmadığını kontrol edebilir ve alınmışsa kullanıcı işlemini gerçekleştirebilirsiniz.
@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();
}
}
}
Ayrıca, bir dizi izni daha kolay bir şekilde kontrol etmek ve almak için GoogleSignInOptionsExtension öğesini hasPermissions, requestPermissions öğesini de GoogleSignInOptionsExtension öğesine iletebilirsiniz.