서비스 계정은 시트 공유로, OAuth는 사용자의 동의로 시트 접근 권한을 얻습니다
프로그램으로 구글 시트를 읽고 쓰는 구글 시트 API 연동을 시작하면 가장 먼저 권한 방식을 골라야 합니다. OAuth와 서비스 계정, 두 가지입니다.
둘 다 시트에 접근할 권한을 받는 방법인데, 누가 어떻게 허락하느냐가 다릅니다. 차이를 하나씩 보고 어느 쪽을 쓸지 고르는 기준까지 정리해 보겠습니다.
목차
1. OAuth는 구글 계정으로 로그인해 승인하면 시트에 접근합니다
한 줄 설명: 웹사이트에서 보는 ‘구글 계정으로 로그인’ 버튼과 같은 방식입니다. 사용자가 프로그램에 내 시트를 써도 좋다고 동의하면, 프로그램은 그 구글 계정이 볼 수 있는 시트에 접근합니다. 그 계정에 권한이 없는 시트는 OAuth로도 열 수 없습니다.
작동 순서: 클라이언트 ID(프로그램을 구글에 등록하고 받는 식별 정보)를 만들고, 처음 실행할 때 브라우저에서 구글 로그인과 승인을 거쳐 시트에 접근합니다. 승인 뒤에는 자격 증명이 컴퓨터에 저장되어 다음 실행부터는 다시 묻지 않습니다(Google Sheets API 파이썬 빠른 시작 사이트 참고).
장점: 로그인한 계정으로 열 수 있는 시트라면 따로 공유 설정을 하지 않아도 됩니다. 사용자마다 자기 시트를 각자 연결하는 서비스에 맞습니다.
단점: 처음에 한 번은 사람이 브라우저에서 로그인하고 승인해야 합니다. 승인할 때 보이는 동의 화면과 클라이언트 ID도 미리 설정해 두어야 합니다.
2. 서비스 계정은 서비스 계정 이메일을 시트에 공유해서 접근합니다
한 줄 설명: 사람이 아니라 프로그램이 쓰는 전용 계정입니다(Google Cloud 서비스 계정 개요 사이트 참고). 서비스계정이름@프로젝트ID.iam.gserviceaccount.com 형태의 이메일이 있고, 사용자 동의가 필요 없습니다.
작동 순서: 서비스 계정을 만들고, JSON 키 파일을 내려받습니다. 이 키 파일 안의 client_email 항목에 적힌 이메일을 접근할 시트의 공유 목록에 추가하면 프로그램이 그 시트를 읽고 쓸 수 있습니다. 시트를 공유하는 방법은 구글 스프레드시트 공유하기 글을 참고하기 바랍니다.
장점: 브라우저 로그인이나 승인 없이 프로그램 혼자 실행됩니다. 정해진 시간마다 자동으로 도는 작업에 맞습니다.
단점: 접근할 시트마다 서비스 계정 이메일을 공유해야 합니다. 공유받지 않은 시트는 열 수 없습니다. 또 키 파일이 곧 열쇠라서, 구글도 서비스 계정 키는 신중하게 관리하지 않으면 보안 위험이 될 수 있다고 안내합니다.

3. 두 방식을 표로 비교하면 이렇게 다릅니다
OAuth는 구글 계정 로그인으로 승인하고, 서비스 계정은 키 파일로 인증하되 그 이메일이 시트 공유 목록에 있어야 합니다.
| 비교 항목 | OAuth | 서비스 계정 |
|---|---|---|
| 권한을 얻는 방법 | 사용자가 구글 계정으로 로그인해 승인 | 시트를 서비스 계정 이메일에 공유 |
| 사용자 로그인 | 처음 실행할 때 필요 | 필요 없음 |
| 접근하는 시트 | 로그인한 구글 계정이 볼 수 있는 시트 | 공유받은 시트 |
| 관리할 것 | 동의 화면과 클라이언트 ID 설정 | 키 파일 보관, 시트마다 이메일 공유 |
4. 그래서 어느 쪽을 골라야 할까요?
누구의 시트를 다루는지로 갈립니다. 매일 정해진 시간에 내 시트에 데이터를 채우는 프로그램이라면 로그인 없이 돌아가는 서비스 계정이 맞습니다. 여러 사용자가 각자 자기 시트를 연결하는 웹서비스라면 사용자마다 동의를 받는 OAuth가 맞습니다.
프로그램으로 내 시트를 갱신하려면 서비스 계정, 다른 사람들의 시트까지 연결하려면 OAuth입니다.
API 인증을 다른 서비스에서는 어떻게 하는지 궁금하다면 GPT Image 2.5 vs Gemini 3.1 API 비교 (1) – 인증과 비용 글을 참고하기 바랍니다.