whung99
Claude Opus 4.6
feat: deploy Oppy with Google API integration
0d37119
Raw History Blame Contribute Delete
1.95 kB
"""CLI script to authenticate Google account (manual code paste)."""
import json
from pathlib import Path
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import Flow
SCOPES = [
"https://www.googleapis.com/auth/gmail.readonly",
"https://www.googleapis.com/auth/calendar.readonly",
"https://www.googleapis.com/auth/documents.readonly",
"https://www.googleapis.com/auth/drive.metadata.readonly",
]
CLIENT_SECRET_PATH = Path(__file__).parent / "client_secret.json"
TOKEN_PATH = Path(__file__).parent / "token.json"
REDIRECT_URI = "urn:ietf:wg:oauth:2.0:oob"
def main():
with open(CLIENT_SECRET_PATH) as f:
client_config = json.load(f)
if "web" in client_config:
web = client_config["web"]
config = {
"installed": {
"client_id": web["client_id"],
"client_secret": web["client_secret"],
"auth_uri": web["auth_uri"],
"token_uri": web["token_uri"],
"redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"],
}
}
else:
config = client_config
flow = Flow.from_client_config(config, scopes=SCOPES, redirect_uri="http://localhost:8091/")
auth_url, _ = flow.authorization_url(access_type="offline", prompt="consent")
print("\n=== Google OAuth ===")
print(f"\nOpen this URL in your browser:\n\n{auth_url}\n")
print("After granting permissions, you'll be redirected to localhost.")
print("Copy the FULL URL from your browser address bar and paste it here.\n")
redirect_url = input("Paste the redirect URL here: ").strip()
flow.fetch_token(authorization_response=redirect_url)
creds = flow.credentials
TOKEN_PATH.write_text(creds.to_json())
print(f"\nToken saved to {TOKEN_PATH}")
print("You're authenticated! All Google API tools are now live.")
if __name__ == "__main__":
main()