RcmEmailAutomation / scripts /dropbox_auth.py
cmoss3's picture
added dropbox, OCR routing logic, graph connection fix
7da71bc
Raw
History Blame Contribute Delete
1.71 kB
"""One-time Dropbox OAuth setup — generates the refresh token for .env.
Usage:
python scripts/dropbox_auth.py
What it does:
1. Prints an authorization URL — open it in a browser and click Allow.
2. Paste the auth code back at the prompt.
3. Prints the refresh token to copy into DROPBOX_REFRESH_TOKEN in your .env.
After this runs once the refresh token lives in .env and no further browser
interaction is ever needed. The app uses it silently at runtime.
Requirements: pip install dropbox
"""
import sys
try:
import dropbox
from dropbox import DropboxOAuth2FlowNoRedirect
except ImportError:
sys.exit("dropbox package not installed — run: pip install dropbox")
def main() -> None:
app_key = input("Enter DROPBOX_APP_KEY: ").strip()
app_secret = input("Enter DROPBOX_APP_SECRET: ").strip()
auth_flow = DropboxOAuth2FlowNoRedirect(
app_key,
app_secret,
token_access_type="offline",
)
authorize_url = auth_flow.start()
print("\n--- Step 1 ---")
print("Open this URL in a browser and click Allow:\n")
print(authorize_url)
print()
auth_code = input("--- Step 2 --- Paste the authorization code here: ").strip()
try:
result = auth_flow.finish(auth_code)
except Exception as exc:
sys.exit(f"Auth failed: {exc}")
print("\n--- Done ---")
print("Add these to your .env file:\n")
print(f"DROPBOX_APP_KEY={app_key}")
print(f"DROPBOX_APP_SECRET={app_secret}")
print(f"DROPBOX_REFRESH_TOKEN={result.refresh_token}")
print()
print("The refresh token does not expire. Re-run this script only if you revoke app access.")
if __name__ == "__main__":
main()