빠른 시작에서는 Google Workspace API
Google Workspace 빠른 시작에서는 API 클라이언트 라이브러리를 사용하여 인증 및 승인 흐름의 세부 정보를 확인하세요. 따라서 자체 앱에 클라이언트 라이브러리를 사용합니다. 이 빠른 시작에서는 테스트에 적합한 간소화된 인증 접근 방식 환경입니다 프로덕션 환경의 경우 인증 및 승인 이전 액세스 사용자 인증 정보 선택 선택할 수 있습니다.
Google Keep API에 요청하는 Java 명령줄 애플리케이션을 만듭니다.
목표
- 환경을 설정합니다.
- 샘플을 설정합니다.
- 샘플을 실행합니다.
기본 요건
- Java 1.8 이상
- Gradle 7.0 이상.
- Google Cloud 프로젝트.
- Google Keep이 사용 설정된 Google 계정
환경 설정
이 빠른 시작을 완료하려면 환경을 설정하세요.
API 사용 설정
Google API를 사용하려면 먼저 Google Cloud 프로젝트에서 사용 설정해야 합니다. 단일 Google Cloud 프로젝트에서 하나 이상의 API를 사용 설정할 수 있습니다.Google Cloud 콘솔에서 Google Keep API를 사용 설정합니다.
서비스 계정 만들기
서비스 계정은 애플리케이션이 아닌 더 클 수 있습니다. 서비스 계정을 사용하여 데이터에 액세스하거나 작업을 수행할 수 있습니다. Google Workspace를 대신하여 데이터에 액세스하는 행위 액세스할 수 있습니다 자세한 내용은 서비스 계정 이해를 참조하세요.Google Cloud 콘솔
- Google Cloud 콘솔에서 메뉴 > IAM 및 관리자 > 서비스 계정으로 이동합니다. 로 이동합니다.
- 서비스 계정 만들기를 클릭합니다.
- 서비스 계정 세부정보를 입력한 다음 만들고 계속하기를 클릭합니다.
- 선택사항: 서비스 계정에 역할을 할당하여 Google Cloud 프로젝트의 리소스에 대한 액세스 권한을 부여합니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
- 계속을 클릭합니다.
- 선택사항: 이 서비스 계정으로 관리하고 작업을 수행할 수 있는 사용자 또는 그룹을 입력합니다. 자세한 내용은 서비스 계정 가장 기능 관리를 참고하세요.
- 완료를 클릭합니다. 서비스 계정의 이메일 주소를 기록해 둡니다.
gcloud CLI
- 서비스 계정을 만듭니다.
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - 선택사항: 서비스 계정에 역할을 할당하여 Google Cloud 프로젝트의 리소스에 대한 액세스 권한을 부여합니다. 자세한 내용은 리소스에 대한 액세스 권한 부여, 변경, 취소를 참조하세요.
서비스 계정의 사용자 인증 정보 만들기
공개 키/비공개 키 쌍 형식의 사용자 인증 정보를 얻어야 합니다. 이러한 사용자 인증 정보는 코드에서 서비스 계정 작업을 승인하는 데 사용됩니다. 있습니다. <ph type="x-smartling-placeholder">- </ph>
- Google Cloud 콘솔에서 메뉴 > IAM 및 관리자 > 서비스 계정으로 이동합니다. 로 이동합니다.
- 서비스 계정을 선택합니다.
- 키 > 키 추가 > 새 키 만들기를 클릭합니다.
- JSON을 선택한 다음 만들기를 클릭합니다.
새 공개/비공개 키 쌍이 생성되어 머신을 새 파일로 저장합니다. 다운로드한 JSON 파일을
credentials.json
로 작업 디렉터리에 있습니다 이 파일은 이 키의 유일한 사본입니다. 스토리지, 앱, 이미지, 데이터 및 안전하게 보관하려면 서비스 계정 키 관리. - 닫기를 클릭합니다.
서비스 계정에 도메인 전체 위임 설정
Google Workspace 조직의 사용자를 대신하여 API를 호출하려면 다음 안내를 따르세요. 서비스 계정에 Google Workspace 관리 콘솔에 액세스할 수 없습니다. 자세한 내용은 자세한 내용은 서비스 계정에 도메인 전체 권한 위임.- Google Cloud 콘솔에서 메뉴 > IAM 및 관리자 > 서비스 계정으로 이동합니다. 로 이동합니다.
- 서비스 계정을 선택합니다.
- 고급 설정 표시를 클릭합니다.
- '도메인 전체 위임' 아래에서 서비스 계정의 '클라이언트 ID'를 찾습니다 복사 를 클릭하여 클라이언트 ID 값을 클립보드에 복사합니다.
관련 Google Workspace 계정에 대한 최고 관리자 액세스 권한이 있는 경우 Google Workspace 관리 콘솔을 확인한 후 최고 관리자를 사용하여 로그인합니다. 계정에 로그인하고 다음 단계를 계속 진행합니다.
관련 Google Workspace 계정에 대한 최고 관리자 액세스 권한이 없는 경우 해당 계정의 최고 관리자에게 문의하여 서비스 계정의 클라이언트 ID 전송 및 OAuth 범위 목록을 표시하여 관리 콘솔에서 다음 단계를 완료할 수 있도록 합니다.
- Google 관리 콘솔에서 메뉴 > 보안 > 액세스 및 데이터 관리 > API 관리로 이동합니다. 로 이동합니다.
- 도메인 전체 위임 관리를 클릭합니다.
- 새로 추가를 클릭합니다.
- '클라이언트 ID' 입력란에 이전에 복사한 클라이언트 ID를 붙여넣습니다.
- 'OAuth 범위'에서 필드에 애플리케이션에 필요한 범위를 쉼표로 구분된 목록으로 입력합니다. OAuth 동의 화면을 구성할 때 정의한 것과 동일한 범위입니다.
- 승인을 클릭합니다.
작업공간 준비
작업 디렉터리에서 새 프로젝트 구조를 만듭니다.
gradle init --type basic mkdir -p src/main/java src/main/resources
src/main/resources/
디렉터리에서credentials.json
파일을 복사합니다. 다운로드해 볼 수 있습니다기본
build.gradle
파일을 열고 콘텐츠를 다음 코드를 참조하세요.apply plugin: 'java' apply plugin: 'application' mainClassName = 'KeepQuickstart' sourceCompatibility = 1.8 targetCompatibility = 1.8 version = '1.0' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { implementation 'com.google.api-client:google-api-client:1.23.0' implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0' implementation 'com.google.apis:google-api-services-keep:v1-rev20210528-1.31.0' }
샘플 설정
src/main/java/
디렉터리에서 다음과 같은 이름의 새 자바 파일을 만듭니다.build.gradle
파일의mainClassName
값과 일치합니다.새 Java 파일에 다음 코드를 포함합니다.
import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.keep.v1.Keep; import com.google.api.services.keep.v1.model.Note; import com.google.api.services.keep.v1.model.Section; import com.google.api.services.keep.v1.model.TextContent; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.security.GeneralSecurityException; import java.util.Collections; import java.util.List; public class KeepQuickstart { private static final String APPLICATION_NAME = "Google Keep API Java Quickstart"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); /** * Global instance of the scopes required by this quickstart. If modifying these scopes, delete * your previously saved tokens/ folder. */ private static final List<String> KEEP_SCOPES = Collections.singletonList("https://www.googleapis.com/auth/keep"); private static final String CREDENTIALS_FILE_PATH = "/credentials.json"; /** * Creates an authorized Credential object. * * @param HTTP_TRANSPORT The network HTTP Transport. * @return An authorized Credential object. * @throws IOException */ private static Credential getOAuthCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException { // Load client secrets. InputStream in = KeepQuickstart.class.getResourceAsStream(CREDENTIALS_FILE_PATH); if (in == null) { throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); } GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); // Build flow and trigger user authorization request. GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, KEEP_SCOPES) .setDataStoreFactory(new FileDataStoreFactory(new java.io.File("tokens"))) .setAccessType("offline") .build(); LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build(); return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); } public static void main(String... args) throws IOException, GeneralSecurityException { // Build a new authorized API client service. final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); Keep service = new Keep.Builder(HTTP_TRANSPORT, JSON_FACTORY, getOAuthCredentials(HTTP_TRANSPORT)) .setApplicationName(APPLICATION_NAME) .build(); Section noteBody = new Section().setText(new TextContent().setText("Finish preparations by tomorrow!")); Note newNote = new Note().setTitle("Customer call next week").setBody(noteBody); // Creates a new text note. service.notes().create(newNote).execute(); } }
샘플 실행
샘플을 실행합니다.
gradle run
-
샘플을 처음 실행하면 액세스를 승인하라는 메시지가 표시됩니다.
<ph type="x-smartling-placeholder">
- </ph>
- 아직 Google 계정에 로그인하지 않은 경우 메시지가 표시되면 로그인합니다. 만약 여러 계정에 로그인한 경우 승인에 사용할 계정 1개를 선택하세요.
- 수락을 클릭합니다.
Java 애플리케이션이 실행되고 Google Keep API를 호출합니다.
승인 정보는 파일 시스템에 저장되므로 다음에 샘플을 실행할 때 승인하라는 메시지가 표시되지 않습니다.