En iyi kullanıcı deneyimi için kullanıcıların ilk kez oturum açarken mümkün olduğunca az sayıda kapsam istemelisiniz. Uygulamanızın temel işlevi bir Google hizmetine bağlı değilse oturum açarken genellikle tek ihtiyacınız olan GoogleSignInOptions.DEFAULT_SIGN_IN
yapılandırmasıdır.
Uygulamanızın Google API verilerinden yararlanabilecek özellikler içermesine karşın, uygulamanızın temel işlevinin bir parçası olarak gerekli olmamasına rağmen, uygulamanızı, API verilerine erişilemediği durumlarda sorunsuz şekilde ele alabilecek şekilde tasarlamanız gerekir. Örneğin, kullanıcı Drive'a erişim izni vermediğinde, son kaydedilen dosyaların listesini gizleyebilirsiniz.
Google API'lerine yalnızca kullanıcı belirli bir API'ye erişim gerektiren bir işlem gerçekleştirdiğinde erişmek için ihtiyaç duyduğunuz ek kapsamları talep etmelisiniz. Örneğin, yalnızca kullanıcı "Drive'a Kaydet" düğmesine ilk kez dokunduğunda Drive'ına erişim izni isteyebilirsiniz.
Bu tekniği kullanarak, yeni kullanıcıların yorulmasını veya kullanıcılardan belirli izinleri neden istendiği konusunda kafalarının karışmasını önleyebilirsiniz.
Kullanıcı işlemlerinin gerektirdiği izinleri isteme
Bir kullanıcı oturum açma sırasında istenmeyen kapsam gerektiren bir işlem gerçekleştirdiğinde, kullanıcının gerekli izinleri zaten verip vermediğini kontrol etmek için GoogleSignIn.hasPermissions
öğesini çağırın. Aksi takdirde, kullanıcıdan gerekli ek kapsamları isteyen bir etkinlik başlatmak için GoogleSignIn.requestPermissions
öğesini ç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ğırmasında, gerekli izinlerin başarılı bir şekilde alınıp alınmadığını kontrol edebilir ve elde edildiyse 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 grup izni daha kolay kontrol edip almak için hasPermissions
ve requestPermissions
adlı kullanıcılara GoogleSignInOptionsExtension
iletebilirsiniz.