OAuth 클라이언트 ID의 과거와 현재: Python 인증 라이브러리 비교
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Google API를 사용하는 개발자, 특히 OAuth 인증 및 라이브러리 마이그레이션에 관심 있는 Python 개발자
핵심 요약
- 구글은
oauth2client
라이브러리를 2017년에 공식적으로 deprecated하고google-auth
및google_auth_oauthlib
를 권장하며, 이전 라이브러리의 예제가 여전히 온라인에 남아 있어 혼란을 유발 - 새로운 라이브러리는 OAuth2 토큰 저장 기능을 지원하지 않아 개발자가 직접 구현해야 하며, 이는 추가 코드량과 복잡성을 초래
- Workspace/GWS API, YouTube, 일부 GCP API는 클라이언트 라이브러리가 없어 인증 구현에 더 많은 주의가 필요
섹션별 세부 요약
1. 인증 라이브러리의 역사와 현재 상태
- 구글은
oauth2client
를 2017년에 deprecated하고google-auth
및google_auth_oauthlib
를 새롭게 도입했으나, 마이그레이션 가이드나 공식 문서에 예제 비교가 제공되지 않음 oauth2client
는 유지보수 모드에서 작동하며, 자동화된 토큰 저장 기능을 제공하지만, 새로운 라이브러리는 이 기능을 지원하지 않음- 주요 영향을 받는 API: Workspace/GWS(드라이브, 시트, 이메일 등), YouTube, 일부 GCP API
2. 설치 및 사용 방법
pip
또는uv
를 사용해google-api-python-client
,oauth2client
,google-auth-httplib2
,google-auth-oauthlib
설치- 예시 명령어:
pip install -U pip google-api-python-client oauth2client
또는uv pip install -U google-api-python-client oauth2client
- 설치 확인:
python -c "import googleapiclient, httplib2, oauth2client"
또는python -c "import googleapiclient, google.auth, google.oauth2, google_auth_oauthlib"
3. 코드 예제 및 차이점
- 구식 라이브러리 예제:
```python
from oauth2client import file, client, tools
store = file.Storage('storage.json')
creds = store.get()
```
- 최신 라이브러리 예제:
```python
from google.auth.transport.requests import Request
from google.oauth2 import credentials
from google_auth_oauthlib.flow import InstalledAppFlow
```
- 주요 차이점:
- 구식 라이브러리: 내장 토큰 저장 기능 지원
- 최신 라이브러리: 개발자가 직접 토큰 저장 구현 필요
4. 토큰 저장 기능의 영향
- 구식 라이브러리: 자동화된 토큰 저장으로 사용자가 매번 인증 요청을 받지 않음
- 최신 라이브러리: 개발자가
refresh_token
을 직접 관리해야 하며, 이는 UX 저하 가능 - 권장 사항: 토큰 저장 기능 구현으로 사용자 경험 개선
결론
- 구글의 새로운 인증 라이브러리(
google-auth
)는 토큰 저장 기능을 지원하지 않으므로, 개발자는 반드시 이 부분을 직접 구현해야 하며, 이는 추가 코드량과 복잡성을 초래함. - 마이그레이션 시
oauth2client
와google-auth
의 차이점에 주의하고, 토큰 저장 로직을 명확히 구현하여 사용자 경험을 유지해야 함.