티스토리 뷰

구글 시트 API 에 있는 권한부여요청 글을 보고 정리합니다.

잘못된 내용이 있다면 알려주세요~

 

구글 시트 API에서 사용자의 어플리케이션을 확인하는데는 두 가지 방법이 있다.

OAuth 2.0 token 을 이용하는 방법과 어플리케이션의 API 키를 이용하는 방법

 

- 개별적인 비공개 데이터를 요청하는 경우, 어플리케이션은 반드시 OAuth 2.0 token 을 사용자의 요청과 함께 제공해야한다. API 키를 제공할 수도 있지만 필수는 아니다.

- 공개 데이터와 같이 별도의 권한요청이 필요하지 않은경우, 어플리케이션은 API 키나 OAuth 2.0 token 둘 중 하나만 제공하거나 둘 다 제공할 수도 있다. 사용자가 편리한대로 쓰면 된다.


OAuth 2.0

권한부여 요청을 위해서 반드시 필요한 프로토콜이다.

Google Sign-In 을 어플리케이션에서 쓰고 있다면, 사용자가 일부 허가를 컨트롤할 수 있다.

 

공개하지 않은 사용자의 데이터를 위해서 허가된 사용자로부터 구글 시트 API에 대한 요청을 허가받아야 한다.

권한부여 프로세스는 어플리케이션 종류에 달려있다.

 

모든 어플리케이션 타입의 기본적인 프로세스

1. 어플리케이션을 만들 때, 어플리케이션을 Google API Console 을 이용해 등록해야한다.

그럼 구글은 client ID 와 client secret 같은 정보를 제공한다.

2. Google API Console 에서 Google Sheets API 를 활성화시킨다.

(만약 API Console 목록에 이 API가 없으면, 이 단계는 넘어간다.)

3. 어플리케이션에서 사용자 데이터에 접근이 필요할 때, 구글에 특정 접근범위를 요청한다.

4. 구글은 데이터를 요청하는 어플리케이션에 권한부여할지 물어보는 동의화면을 사용자에게 보여준다.

5. 사용자가 승인하면, 구글은 어플리케이션에 짧은 주기의 엑세스 토큰을 제공한다.

6. 요청에 엑세스 토큰을 첨부한 어플리케이션은 사용자 데이터를 요청한다.

7. 구글이 사용자의 요청과 토큰이 유효한것으로 확정하면, 요청된 데이터를 반환한다.

 

새로운 액세스 토큰을 획득하기 위해 refresh token 을 사용하는 경우처럼 몇몇 플로우는 추가적인 단계들을 포함한다.

다양한 어플리케이션에 대한 추가적인 플로우 정보들은 Google's OAuth 2.0 문서 참조!

 

구글 시트 API 관련한 OAuth 2.0 범위 정보

Scope 의미
https://www.googleapis.com/auth/spreadsheets.readonly 사용자의 시트와 그 속성에 읽기전용 접근 허용
https://www.googleapis.com/auth/spreadsheets 사용자의 시트와 그 속성에 읽고 쓰는 접근 허용
https://www.googleapis.com/auth/drive.readonly 파일의 메타데이터와 내용에 읽기전용 접근 허용
https://www.googleapis.com/auth/drive.file 엡에 의해 생성되거나 열리는 파일에 대한 파일별 접근
https://www.googleapis.com/auth/drive

모든 사용자 파일에 전 범위 접근

강력하게 필수적일 때만 이 범위를 요청해야한다.

 

OAuth 2.0 을 사용하는 액세스를 요청하기 위해서, 어플리케이션은 사용자가 어플리케이션을 등록할 때 구글이 제공하는 client ID와 client secret 정보는 물론 범위 정보가 필요하다.


API 키

공개 데이터에 대한 구글 시트 API에 요청하려면 API 키 또는 엑세스 토큰 같은 식별자가 동반되어야 한다.

 

API 키 획득하기

1. API Console 에서 사용자 인증정보(Credentials page) 를 연다.

2. 이 API 는 두 가지 타입의 자격증명을 지원한다. 프로젝트에 적절한 자격증명을 생성하면 된다.

 OAuth 2.0

어플리케이션이 사용자의 비공개 데이터를 요청할 때면 언제든지, 어플리케이션은 요청과 함께 OAuth 2.0 토큰을 보내야한다. 어플리케이션은 먼저 client id를 보내고 다음으로 client secret 을 token 을 얻기위해 보낸다. 사용자는 웹 어플리케이션이나 서비스 어카운트 또는 설치된 어플리케이션을 위한 OAuth 2.0 자격증명을 생성할 수 있다.

 API 키

OAuth 2.0 토큰을 제공하지 않는 요청은 API 키를 보내야만 한다. 이 키는 프로젝트를 식별하고 API 엑세스와 할당량(quota) 그리고 리포트를 제공한다.

API 는 API 키들 중에서 몇 가지 유형의 제한사항을 지원한다. 사용자가 필요로 하는 API 키가 이미 존재하고 있는게 아니라면, 콘솔에서 Create credentials > API key 를 클릭해 API 키를 생성한다. Restrict key 를 클릭하고 Restrictions 중 하나를 선택해 실 운영에서 이걸 사용하기 전에 키를 제한할 수 있다. 

 

API 키를 안전하게 유지하기 위해 best practices for securely using API keys 를 참고하자.

 

API 키를 갖고 나면 어플리케이션은 쿼리 파라미터(key=yourAPIKey)를 모든 요청 URL에 덧붙일 수 있다.

이 API 키는 URL에 포함되어 안전하고, 어떤 인코딩도 필요하지 않다.

댓글