import requests from getpass import getpass # Interaktive und sichere Abfrage des Tokens print("--- Notion API Token Gültigkeits-Check ---") notion_token = getpass("Bitte gib deinen Notion API Key ein (Eingabe wird nicht angezeigt): ") if not notion_token: print("\nFehler: Kein Token eingegeben.") exit() # Der einfachste API-Endpunkt, um die Authentifizierung zu testen url = "https://api.notion.com/v1/users/me" headers = { "Authorization": f"Bearer {notion_token}", "Notion-Version": "2022-06-28" } print("\n... Sende Test-Anfrage an Notion...") try: # --- TEST 1: Grundlegende Authentifizierung --- print("\n[TEST 1/2] Prüfe grundlegende Authentifizierung (/users/me)...") user_response = requests.get("https://api.notion.com/v1/users/me", headers=headers) user_response.raise_for_status() print("✅ ERFOLG! Der API Token ist gültig.") # --- TEST 2: Suche nach der 'Projects' Datenbank --- print("\n[TEST 2/2] Versuche, die 'Projects'-Datenbank über die Suche zu finden (/search)...") search_url = "https://api.notion.com/v1/search" search_payload = { "query": "Projects", "filter": {"value": "database", "property": "object"} } search_response = requests.post(search_url, headers=headers, json=search_payload) search_response.raise_for_status() results = search_response.json().get("results", []) if not results: print("🟡 WARNUNG: Die Suche war erfolgreich, hat aber keine Datenbank namens 'Projects' gefunden.") else: print("✅✅✅ ERFOLG! Die Suche funktioniert und hat die 'Projects'-Datenbank gefunden.") print("Gefundene Datenbanken:") for db in results: print(f"- ID: {db['id']}, Titel: {db.get('title', [{}])[0].get('plain_text', 'N/A')}") except requests.exceptions.HTTPError as e: print(f"\n❌ FEHLER! Einer der Tests ist fehlgeschlagen.") print(f"URL: {e.request.url}") print(f"HTTP Status Code: {e.response.status_code}") print("Antwort von Notion:") try: print(e.response.json()) except: print(e.response.text) except requests.exceptions.RequestException as e: print(f"\n❌ FEHLER! Ein Netzwerk- oder Verbindungsfehler ist aufgetreten: {e}")