En iyi kullanıcı deneyimi için ilk oturum açan kullanıcılar olarak mümkün olduğunca az kapsam istemelisiniz. Uygulamanızın temel işlevi bir Google hizmetine bağlı değilse oturum açarken genellikle tek ihtiyacınız GoogleSignInOptions.DEFAULT_SIGN_IN
yapılandırmasıdır.
Uygulamanız, Google API verilerinden yararlanabilecek ancak uygulamanızın temel işlevselliğinin bir parçası olarak gerekli olmayan özelliklere sahipse, API verilerine erişilemediğinde durumlarla sorunsuz şekilde başa çıkabilmek için uygulamanızı tasarlamanız gerekir. Örneğin, kullanıcı Drive'a erişim izni vermediğinde son kaydedilen dosyaların listesini gizleyebilirsiniz.
Yalnızca kullanıcı belirli bir API'ye erişim gerektiren bir işlem yaptığında, Google API'lerine erişmek için ihtiyacınız olan ek kapsamları istemelisiniz. Örneğin, kullanıcının "Drive'a Kaydet" düğmesine ilk kez dokunması durumunda kullanıcının Drive'ına erişim izni isteyebilirsiniz.
Bu tekniği kullanarak yeni kullanıcıları bunaltmaktan veya belirli izinleri istenmelerinden dolayı kullanıcıların kafasını karıştırmanın önüne geçebilirsiniz.
Kullanıcı işlemleri için gereken izinleri isteme
Kullanıcılar oturum açma işleminde istenmeyen kapsam gerektiren bir işlem gerçekleştirdiğinde, GoogleSignIn.hasPermissions
kullanıcının gerekli izinleri zaten verip vermediğini kontrol eder. Görmüyorsa, kullanıcıdan ek gerekli kapsamları isteyen bir etkinliği başlatmak için GoogleSignIn.requestPermissions
çağrısı yapın.
Örneğin, kullanıcı Drive uygulaması 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ıyla alınıp alınmadığını kontrol edebilir, böylece kullanıcı işlemini yürütebilirsiniz.
@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();
}
}
}
İzin grubunu daha kolay kontrol etmek ve elde etmek için hasPermissions
ve requestPermissions
konumlarına GoogleSignInOptionsExtension
da iletebilirsiniz.