Files
jarvis/core/google_auth.py

35 lines
1.3 KiB
Python
Raw Permalink Normal View History

2026-03-24 00:11:34 -05:00
"""
Shared Google OAuth 2.0 handler.
Covers: Gmail, Google Calendar, Google Tasks, Google Keep.
Place credentials.json (downloaded from Google Cloud Console) in project root.
"""
import os
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
SCOPES = [
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/tasks',
# 'https://www.googleapis.com/auth/keep', # Uncomment if Workspace Enterprise
]
def get_credentials() -> Credentials:
"""
Returns valid Google OAuth credentials.
Opens browser on first run. Saves/refreshes token.json automatically.
"""
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
return creds