1. Analyse der Änderungen:
* superoffice_client.py: Implementierung der Methoden create_contact (Standardfelder) und create_person (inkl. Firmenverknüpfung).
* auth_handler.py: Härtung der Authentifizierung durch Priorisierung von SO_CLIENT_ID und Unterstützung für load_dotenv(override=True).
* main.py: Erweiterung des Test-Workflows für den vollständigen Lese- und Schreib-Durchstich (Erstellung von Demo-Firmen und Personen).
* README.md: Aktualisierung des Status Quo und der verfügbaren Client-Methoden.
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
import os
|
|
import requests
|
|
from dotenv import load_dotenv
|
|
|
|
# Lade Umgebungsvariablen, um ID und Refresh Token zu holen
|
|
load_dotenv(dotenv_path="../.env")
|
|
|
|
# Wir nutzen das Secret, das du mir gegeben hast, HARTCODIERT, um .env Fehler auszuschließen
|
|
HARDCODED_SECRET = "418c424681944ad4138788692dfd7ab2"
|
|
|
|
# ID und Refresh Token aus der .env (zur Kontrolle)
|
|
client_id = os.getenv("SO_CLIENT_ID") or os.getenv("SO_SOD")
|
|
refresh_token = os.getenv("SO_REFRESH_TOKEN")
|
|
|
|
print(f"--- DEBUG AUTHENTICATION ---")
|
|
print(f"Client ID (aus .env): {client_id}")
|
|
print(f"Refresh Token (aus .env): {refresh_token[:10]}...")
|
|
print(f"Client Secret (hartcodiert): {HARDCODED_SECRET[:5]}...")
|
|
|
|
url = "https://sod.superoffice.com/login/common/oauth/tokens"
|
|
|
|
# Payload für den Request
|
|
payload = {
|
|
"grant_type": "refresh_token",
|
|
"client_id": client_id,
|
|
"client_secret": HARDCODED_SECRET,
|
|
"refresh_token": refresh_token,
|
|
# Manche Server brauchen das hier auch beim Refresh:
|
|
"redirect_uri": "https://devnet-tools.superoffice.com/openid/callback"
|
|
}
|
|
|
|
print(f"\nSende Request an: {url}")
|
|
try:
|
|
resp = requests.post(url, data=payload)
|
|
print(f"Status Code: {resp.status_code}")
|
|
|
|
if resp.status_code == 200:
|
|
print("SUCCESS! Access Token erhalten.")
|
|
print(resp.json())
|
|
else:
|
|
print("FAILURE.")
|
|
print(resp.text)
|
|
except Exception as e:
|
|
print(f"Exception: {e}")
|