Ek Kapsamlar İsteme

En iyi kullanıcı deneyimi için, kullanıcıların oturumunu ilk kez açarken mümkün olduğunca az kapsam istemelisiniz. Uygulamanızın temel işlevi bir Google hizmetine bağlı değilse oturum açma için genellikle tek ihtiyacınız olan GoogleSignInOptions.DEFAULT_SIGN_IN yapılandırmasıdır.

Uygulamanızda Google API verilerinden yararlanabilecek ancak temel işlevinin bir parçası olarak gerekli olmayan özellikler varsa uygulamanızı, API verilerine erişilemediğinde sorunsuz şekilde ele alabileceği ş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 ihtiyacınız olan ek kapsamları istemelisiniz. Örneğin, yalnızca kullanıcı "Drive'a Kaydet" düğmesine ilk kez dokunduğunda kullanıcının Drive'ına erişim izni isteyebilirsiniz.

Bu tekniği kullanarak, yeni kullanıcıların bunaltmasını veya kullanıcılardan neden belirli izinleri istedikleri 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 yaptığında, kullanıcının gerekli izinleri zaten verip vermediğini kontrol etmek için GoogleSignIn.hasPermissions numaralı telefonu arayın. Aksi takdirde, kullanıcıdan gerekli ek kapsamları isteyen bir etkinlik başlatmak için GoogleSignIn.requestPermissions çağrısı yapı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ıyla alınıp alınmadığını kontrol edebilir ve varsa 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();
        }
    }
}

Bir grup izni daha kolay bir şekilde kontrol edip edinmek için GoogleSignInOptionsExtension adlı iş ortağını hasPermissions ve requestPermissions adlı kullanıcılara iletebilirsiniz.