En iyi kullanıcı deneyimi için, kullanıcıların ilk kez oturum açarken mümkün olduğunca az kapsam istemeniz gerekir. Uygulamanızın temel işlevleri 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şlevi kapsamında gerekli olmayan özellikler varsa uygulamanızı, API verilerine erişilemediği durumları sorunsuz bir şekilde ele alabilecek şekilde tasarlamanız gerekir. Örneğin, kullanıcı Drive erişimi vermediğinde son kaydedilen dosyaların listesini gizleyebilirsiniz.
Yalnızca kullanıcı belirli bir API'ye erişim gerektiren bir işlem gerçekleştirdiğinde Google API'lerine erişmek için ihtiyaç duyduğunuz ek kapsamları istemeniz gerekir. Örneğin, kullanıcının Drive'ına erişmek için yalnızca kullanıcı "Drive'a kaydet" düğmesine ilk kez dokunduğunda izin isteyebilirsiniz.
Bu tekniği kullanarak yeni kullanıcıları bunaltabilir veya belirli izinlerin neden istendiği konusunda kafalarını karıştırabilirsiniz.
Kullanıcı işlemlerinin gerektirdiği izinleri isteme
Kullanıcı, oturum açarken istenmeyen bir kapsam gerektiren bir işlem yaptığında, kullanıcının gerekli izinleri 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 gerçekleştirirse aşağıdakileri 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ğırma işlevinde, gerekli izinlerin başarıyla alınıp alınmadığını kontrol edebilir ve izinler alındıysa 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 kontrol etmek ve almak için GoogleSignInOptionsExtension
'ü hasPermissions
ve requestPermissions
'ye iletebilirsiniz.