Android'de kullanıcı verilerine erişim yetkisi verme

Kimlik doğrulama bir kişinin kim olduğunu belirler ve genellikle kullanıcı olarak da adlandırılır kaydolma veya oturum açma. Yetkilendirme, erişim verme veya reddetme sürecidir veriler ya da kaynaklarla bağlantı kurmaktır. Örneğin, uygulamanız aşağıdaki işlemler için kullanıcınızın iznini istiyor: Kullanıcının Google Drive'ına erişebilir.

Kimlik doğrulama ve yetkilendirme çağrıları iki ayrı ve farklı olmalıdır. ihtiyaçları doğrultusunda akış şeklinde düzenlemenizi sağlar.

Uygulamanızda Google API verilerini kullanabilen ancak kullanılamayan özellikler varsa bir gereklilik olduğuna karar verirseniz, uygulamanızı bu özelliğe Böylece, API verilerine erişilemediği durumlarda bu sorunlarla kolayca başa çıkabileceksiniz. Örneğin, kullanıcı Drive'a izin vermediğinde yakın zamanda kaydedilen dosyaların listesini gizleyebilirsiniz erişim.

Yalnızca Google API'lerine erişmeniz için gereken kapsamlara erişim isteğinde bulunmalısınız Kullanıcı, belirli bir API'ye erişim gerektiren bir işlem gerçekleştirdiğinde Örneğin, Örneğin, kullanıcı "Drive'a Kaydet"e dokunduğunda düğmesini tıklayın.

Yetkilendirmeyi kimlik doğrulamadan ayırarak, yeni ve karmaşık yüklenici veya bazı soruların neden istendiğine dair kullanıcıların kafasını karıştıran izin verir.

Google Kimlik Hizmetleri'nde kimlik doğrulama, SignInClient. Google tarafından depolanan kullanıcı verilerine erişmesi gereken işlemleri yetkilendirmek için AuthorizationClient kullanmanızı öneririz.

Kullanıcı işlemlerinin gerektirdiği izinler isteme

Kullanıcı ek kapsam gerektiren bir işlem gerçekleştirdiğinde, AuthorizationClient.authorize()

Örneğin, bir kullanıcı Drive'ına erişmeyi gerektiren bir işlem gerçekleştirirse aşağıdaki adımları izleyin:

List<Scopes> requestedScopes = Arrays.asList(DriveScopes.DRIVE_APPDATA);
AuthorizationRequest authorizationRequest = AuthorizationRequest.builder().setRequestedScopes(requestedScopes).build();
Identity.getAuthorizationClient(this)
        .authorize(authorizationRequest)
        .addOnSuccessListener(
            authorizationResult -> {
              if (authorizationResult.hasResolution()) {
                    // Access needs to be granted by the user
                PendingIntent pendingIntent = authorizationResult.getPendingIntent();
                try {
startIntentSenderForResult(pendingIntent.getIntentSender(),
REQUEST_AUTHORIZE, null, 0, 0, 0, null);
                } catch (IntentSender.SendIntentException e) {
                Log.e(TAG, "Couldn't start Authorization UI: " + e.getLocalizedMessage());
                }
              } else {
            // Access already granted, continue with user action
                saveToDriveAppFolder(authorizationResult);
              }
            })
        .addOnFailureListener(e -> Log.e(TAG, "Failed to authorize", e));

Etkinliğinizin onActivityResult geri aramasında, ve izin başarılı bir şekilde alındıysa kullanıcı işlemini gerçekleştirin.

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  if (requestCode == MainActivity.REQUEST_AUTHORIZE) {
    AuthorizationResult authorizationResult = Identity.getAuthorizationClient(this).getAuthorizationResultFromIntent(data);
    saveToDriveAppFolder(authorizationResult);
  }
}