개요
목적: 이 문서에서는 GoogleCredential 유틸리티 클래스를 사용하여 Google 서비스에서 OAuth 2.0 인증을 수행할 수 있습니다. 대상 Google에서 제공하는 일반 OAuth 2.0 기능에 대한 자세한 내용은 OAuth 2.0 및 Java용 Google OAuth 클라이언트 라이브러리.
요약: Google 서비스에 저장된 보호된 데이터에 액세스하려면 다음을 사용하세요. 승인을 위한 OAuth 2.0 Google API는 다양한 유형의 클라이언트 애플리케이션에 대해 OAuth 2.0 흐름을 지원합니다. 이러한 모든 흐름에서 클라이언트 애플리케이션은 클라이언트 애플리케이션 및 보호되는 데이터의 소유자와만 연결되어 있음 있습니다 또한 액세스 토큰은 은 클라이언트 애플리케이션이 액세스할 수 있는 데이터의 종류를 정의합니다 (예: '할 일 관리'). OAuth 2.0의 중요한 목표는 모든 웹 애플리케이션에 대한 안전하고 잠재적 영향을 최소화하면서 보호된 데이터에 편리하게 액세스 안전하게 보호할 수 있습니다
Java용 Google API 클라이언트 라이브러리의 OAuth 2.0 패키지는 범용 Java용 Google OAuth 2.0 클라이언트 라이브러리.
자세한 내용은 다음 패키지에 대한 Javadoc 문서를 참고하세요.
- com.google.api.client.googleapis.auth.oauth2 (google-api-client에서)
- com.google.api.client.googleapis.extensions.appengine.auth.oauth2 (google-api-client-appengine에서)
Google API 콘솔
Google API에 액세스하려면 먼저 Google API 콘솔을 통한 인증 및 결제 클라이언트가 설치된 애플리케이션, 모바일 애플리케이션, 웹 서버 또는 브라우저에서 실행되는 클라이언트입니다.
사용자 인증 정보를 올바르게 설정하는 방법에 대한 안내는 다음을 참조하세요. API 콘솔 도움말
사용자 인증 정보
GoogleCredential
GoogleCredential 보호되는 리소스에 액세스하기 위한 OAuth 2.0용 스레드 안전 도우미 클래스입니다. 액세스할 수 있습니다 예를 들어 이미 액세스 토큰이 있는 경우 는 다음과 같은 방식으로 요청할 수 있습니다.
GoogleCredential credential = new GoogleCredential().setAccessToken(accessToken); Plus plus = new Plus.builder(new NetHttpTransport(), GsonFactory.getDefaultInstance(), credential) .setApplicationName("Google-PlusSample/1.0") .build();
Google App Engine ID
이 대체 사용자 인증 정보는 Google App Engine App Identity Java API 클라이언트 애플리케이션이 인스턴스에 대한 액세스를 요청하는 사용자 인증 정보와는 달리 App Identity API가 클라이언트에 대한 액세스 권한을 제공 애플리케이션의 자체 데이터를 저장하는 데 사용됩니다
AppIdentityCredential 사용 (google-api-client-appengine에서) 이 사용자 인증 정보는 Google App Engine이 확인할 수 있습니다. 필요한 OAuth 2.0 범위만 지정하면 됩니다.
urlshortener-robots-appengine-sample에서 가져온 예시 코드:
static Urlshortener newUrlshortener() { AppIdentityCredential credential = new AppIdentityCredential( Collections.singletonList(UrlshortenerScopes.URLSHORTENER)); return new Urlshortener.Builder(new UrlFetchTransport(), GsonFactory.getDefaultInstance(), credential) .build(); }
데이터 스토어
액세스 토큰의 만료일은 일반적으로 1시간이며
사용하려고 하면 오류가 발생합니다.
GoogleCredential
'새로고침'을 자동으로 처리하여 다시 말해, 간단히 말하자면
새 액세스 토큰이 생성됩니다 이는 수명이 긴 갱신 토큰을 통해 이루어집니다.
일반적으로
access_type=offline
매개변수
GoogleAuthorizationCodeFlow.Builder.setAccessType(String))
대부분의 애플리케이션은 사용자 인증 정보의 액세스 토큰을 유지하고 갱신 토큰을 사용할 수 있습니다. 사용자 인증 정보의 액세스 및/또는 갱신 토큰을 유지하려면 다음을 수행합니다. 자체 DataStoreFactory 구현 제공 StoredCredential 사용 또는 라이브러리에서 제공되는 다음 구현 중 하나를 사용할 수 있습니다.
- AppEngineDataStoreFactory: Google App Engine Data Store API를 사용하여 사용자 인증 정보를 유지합니다.
- MemoryDataStoreFactory: '유지' 메모리의 사용자 인증 정보로, 프로세스의 전체 기간 동안 단기 저장소로만 유용합니다.
- FileDataStoreFactory: 사용자 인증 정보를 파일에 유지합니다
App Engine 사용자: AppEngineCredentialStore 지원 중단되었으며 곧 삭제됩니다. 이때 AppEngineDataStoreFactory StoredCredential을 사용합니다. 이전 방식으로 사용자 인증 정보를 저장한 경우 추가된 도우미 메서드 migrateTo(AppEngineDataStoreFactory) 또는 migrateTo(DataStore) 몇 가지 옵션을 제공합니다
다음을 사용할 수 있습니다. DataStoreCredentialRefreshListener GoogleCredential.Builder.addRefreshListener(CredentialRefreshListener)를 사용하여 사용자 인증 정보에 대해 설정합니다.
승인 코드 흐름
승인 코드 흐름을 사용하여 최종 사용자가 애플리케이션에 권한을 부여할 수 있도록 허용 Google API에서 보호되는 데이터에 액세스할 수 없습니다. 이 흐름의 프로토콜은 지정된 승인 코드 부여.
이 흐름은 GoogleAuthorizationCodeFlow를 사용하여 구현됩니다. 단계는 다음과 같습니다.
- 최종 사용자가 애플리케이션에 로그인합니다. 해당 사용자를 를 애플리케이션에 대해 고유한 사용자 ID로 바꿉니다.
- AuthorizationCodeFlow.loadCredential(String)을 호출합니다. 사용자 ID를 기반으로 최종 사용자의 인증 정보를 이미 알고 있는지 확인합니다. 했다면 작업이 완료된 것입니다.
- 그렇지 않은 경우 AuthorizationCodeFlow.newAuthorizationUrl()을 호출합니다. 최종 사용자의 브