Ek Kapsamlar İsteme

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.