40 lines
1.4 KiB
Python
40 lines
1.4 KiB
Python
import asyncio
|
|
import os
|
|
from strava_client import StravaClient
|
|
from dotenv import load_dotenv
|
|
|
|
async def test_connection():
|
|
load_dotenv()
|
|
|
|
client_id = os.getenv("STRAVA_CLIENT_ID")
|
|
client_secret = os.getenv("STRAVA_CLIENT_SECRET")
|
|
refresh_token = os.getenv("STRAVA_REFRESH_TOKEN")
|
|
|
|
if not all([client_id, client_secret, refresh_token]):
|
|
print("❌ Error: Missing Strava credentials in .env file.")
|
|
print("Please ensure STRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET, and STRAVA_REFRESH_TOKEN are set.")
|
|
return
|
|
|
|
client = StravaClient()
|
|
|
|
print("Testing Strava connection...")
|
|
try:
|
|
athlete = await client.get_athlete()
|
|
print(f"✅ Success! Connected as {athlete.get('firstname')} {athlete.get('lastname')}")
|
|
print(f"Athlete ID: {athlete.get('id')}")
|
|
|
|
print("\nFetching recent activities...")
|
|
activities = await client.list_activities(limit=3)
|
|
print(f"Found {len(activities)} recent activities:")
|
|
for a in activities:
|
|
print(f"- {a['name']} ({a['type']}) on {a['start_date']}")
|
|
|
|
except Exception as e:
|
|
print(f"❌ Connection failed: {str(e)}")
|
|
if "401" in str(e):
|
|
print("Hint: This is likely a scope issue. Your token needs 'activity:read' permission.")
|
|
print("Run: uv run get_token.py to re-authorize with the correct scopes.")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_connection())
|