Android의 사용자 데이터에 대한 액세스 승인

인증은 사용자의 신원을 확인하며 일반적으로 사용자라고 부름 있습니다. 승인은 액세스 권한을 부여하거나 거부하는 프로세스입니다. 데이터 또는 리소스에 가장 적합합니다 예를 들어 앱에서 사용자의 Google Drive에 액세스할 수 없습니다.

인증 및 승인 호출은 서로 구분되어야 함 사이트 또는 앱의 요구사항에 따라 최적화할 수 있습니다

앱에 Google API 데이터를 사용할 수 있지만 사용할 수 없는 기능이 있는 경우 앱이 핵심 기능의 일부로 요구되므로 앱을 설계할 때는 API 데이터에 액세스할 수 없는 경우를 적절하게 처리할 수 있어야 합니다. 예를 들어 사용자가 Drive에 권한을 부여하지 않은 경우 최근에 저장된 파일 목록을 숨길 수 있습니다. 액세스할 수 있습니다

Google API에만 액세스해야 하는 범위에 대한 액세스를 요청해야 합니다. 사용자가 특정 API에 액세스해야 하는 작업을 실행할 때 대상 예를 들어 사용자가 링크를 공유할 때마다 사용자의 드라이브에 사용자가 'Drive에 저장'을 탭합니다. 버튼을 클릭합니다.

승인과 인증을 분리하면 사용자에게 특정 정보를 요청하는 이유에 대해 혼동을 야기할 수 있습니다. 권한을 부여할 수 있습니다

Google ID 서비스에서는 SignInClient. Google이 저장한 사용자 데이터에 액세스해야 하는 작업을 승인하기 위해 Google은 AuthorizationClient를 사용하는 것이 좋습니다.

사용자 작업에 필요한 권한 요청

사용자가 추가 범위가 필요한 작업을 수행할 때마다 AuthorizationClient.authorize()

예를 들어 사용자가 Drive에 액세스해야 하는 작업을 실행하는 경우 다음 단계를 따르세요.

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));

활동의 onActivityResult 콜백에서 필요한 권한을 부여받았다면 사용자 작업을 실행하세요.

@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);
  }
}