# Google Drive Hard-Coded Auth Guide Use this guide to enable automatic Drive uploads without running OAuth each time. ## Option 1: Refresh Token (recommended, simple) ### Step 1: Obtain a refresh token 1. In a Python shell run: ```python from google_drive_sync import get_refresh_token refresh_token = get_refresh_token() ``` 2. A browser window opens for Google sign-in 3. The terminal prints your `refresh_token`, e.g. ``` REFRESH_TOKEN = "1//0gxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" ``` ### Step 2: Configure the refresh token Open `google_drive_sync.py` and set: ```python REFRESH_TOKEN = None # place your refresh token here ``` Replace `None` with your token: ```python REFRESH_TOKEN = "1//0gxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # your refresh token ``` ### Step 3: Done Save the file; future uploads happen automatically without another login. --- ## Option 2: Service Account (more secure, production-friendly) ### Step 1: Create the Service Account 1. Visit [Google Cloud Console](https://console.cloud.google.com/) 2. Select or create a project 3. Enable the Google Drive API 4. Go to “IAM & Admin” → “Service Accounts” 5. Click “Create Service Account” 6. Provide a name/description, click “Create and Continue” 7. Grant the “Editor” role, then “Continue” → “Done” ### Step 2: Create and download the key 1. Open the Service Account 2. Go to the “Keys” tab 3. Click “Add Key” → “Create new key” 4. Choose JSON → “Create” 5. Save the JSON into your project directory (e.g., `service-account-key.json`) ### Step 3: Share the Drive folder with the Service Account 1. Create a folder in Drive (e.g., “Chatbot_Data”) 2. Right-click → “Share” 3. In the JSON file find `client_email` (looks like `xxx@xxx.iam.gserviceaccount.com`) 4. Add that email to the folder with “Editor” access ### Step 4: Point the code to the Service Account file Set this in `google_drive_sync.py`: ```python SERVICE_ACCOUNT_FILE = None # e.g. "path/to/service-account-key.json" ``` Replace `None` with your JSON path: ```python SERVICE_ACCOUNT_FILE = "service-account-key.json" # your Service Account JSON path ``` ### Step 5: Done All data now syncs to the folder you shared with the Service Account! --- ## Verify the setup Run the app and confirm uploads reach Drive. If not, check: 1. Refresh token or Service Account path is correct 2. Network connectivity 3. Google Drive API is enabled 4. Service Account has access to the folder ## Notes ⚠️ **Security reminders** - Never commit credentials to public repos - Add `google_drive_sync.py` or secrets to `.gitignore` if needed - Protect the Service Account JSON carefully ## Troubleshooting ### Refresh token expired Re-run `get_refresh_token()` to obtain a new one. ### Service Account can’t access the folder Ensure the Service Account email was invited with the proper permission. ### Authentication failure 1. Double-check `CLIENT_ID` / `CLIENT_SECRET` 2. Confirm the Drive API is enabled 3. Verify your network connection