LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Blog-Übersicht /Digital Marketing / Amazon Ads Refresh Tokens: 365-Tage-Frist und zuverlässige...
Diesen Artikel in anderen Sprachen lesen:

Amazon Ads Refresh Tokens: 365-Tage-Frist und zuverlässige Ablaufüberwachung

Amazon Ads Refresh Tokens: 365-Tage-Frist und zuverlässige Ablaufüberwachung
Inhalt
  1. Amazon Ads Refresh Tokens: 365-Tage-Frist und zuverlässige Ablaufüberwachung
  2. 1. Für welche Tokens die 365-Tage-Regel gilt
  3. 2. Ein Register für Autorisierungen statt Token-Inhalte
  4. 3. Prüfskript mit ausdrücklichen Fehlerzuständen
  5. 4. Zeitplan und Zustellung
  6. 5. Erneuerung und Fehlerbehandlung
  7. Fragen und Antworten
  8. Quellen

Amazon Ads Refresh Tokens: 365-Tage-Frist und zuverlässige Ablaufüberwachung

Seit dem 30. Juli 2026 gilt für neu ausgestellte Refresh Tokens der Amazon-Ads-Werbeberechtigungen eine feste Laufzeit: 365 Tage ab Einwilligung des Advertisers. Der Tausch gegen neue Access Tokens startet diese Frist nicht erneut. Ein lokales Register ermöglicht Vorwarnungen; ergänzendes Fehlermonitoring erkennt widerrufene oder anderweitig ungültige Zugangsdaten auch vor dem geplanten Termin.

Ein Access Token authentifiziert API-Anfragen und gilt normalerweise 60 Minuten. Ein Refresh Token beschafft neue Access Tokens, ohne bei jedem Tausch erneut den Einwilligungsdialog durchlaufen zu müssen.

1. Für welche Tokens die 365-Tage-Regel gilt

Amazon wendet die Regel auf ab dem 30. Juli 2026 ausgestellte Tokens für advertising::campaign_management und advertising::audiences an. Frühere Tokens erhalten durch diese Änderung kein festes Ablaufdatum, bleiben aber widerrufbar und können aus anderen Gründen ungültig werden. Entscheidend ist die Token-Ausstellung, nicht allein der Aufnahmezeitpunkt eines Werbekontos in eine Integration.

Die feste Laufzeit beginnt mit der Einwilligung. Ein Refresh-Tausch liefert ein neues Access Token und dasselbe Refresh Token; eine neue Einwilligung ist ein anderer Vorgang. OAuth-Anbieter verwenden unterschiedliche Regeln. Eine gleitende Laufzeit ist deshalb keine allgemeine Eigenschaft von Refresh Tokens. Außerdem sind die Amazon-Ads-Regeln von den Autorisierungsregeln der Selling Partner API zu unterscheiden.

Der aktuelle Amazon-Ads-Leitfaden empfiehlt vorausschauende Altersüberwachung und erneute Autorisierung. Eine pauschale Aussage, Amazon verschicke niemals E-Mails, Konsolenhinweise oder andere Erinnerungen, ist durch diesen Leitfaden nicht belegt. Die betriebliche Überwachung sollte unabhängig von einer angenommenen Anbieterbenachrichtigung funktionieren.

Die Einwilligung bestimmt den festen Planungstermin. Refresh-Aufrufe verlängern die Frist nicht. Unbekannte Angaben benötigen Klärung; Legacy-Tokens haben nach dieser Regel keine feste Frist.
Die Einwilligung bestimmt den festen Planungstermin. Refresh-Aufrufe verlängern die Frist nicht. Unbekannte Angaben benötigen Klärung; Legacy-Tokens haben nach dieser Regel keine feste Frist.

2. Ein Register für Autorisierungen statt Token-Inhalte

Das PostgreSQL-Beispiel speichert eine Zeile je unabhängig verwalteter Autorisierung. authorization_id ist eine interne stabile Kennung; client_id bezeichnet die Anwendung. Mehrere Anwendungen oder Berechtigungen für denselben Advertiser benötigen getrennte Zeilen. Ein Kontoname allein ist keine eindeutige Autorisierungskennung. Echte Refresh Tokens und Client Secrets gehören in geschützte Geheimnisverwaltung, außerhalb dieser Tabelle und der Alarmausgabe.

Das Feld policy unterscheidet fixed_365, legacy und unknown. Legacy-Zeilen erhalten kein berechnetes Ablaufdatum. Fehlende Belege gehören unter unknown und lösen eine Meldung aus, statt ein erfundenes Einwilligungsdatum zu erzeugen. Für fixed_365 enthält consent_date das UTC-Kalenderdatum der protokollierten Einwilligung und token_issued_at den tatsächlichen Ausstellungszeitpunkt. Für die Einordnung rund um den Stichtag ist ein verlässliches Autorisierungsprotokoll erforderlich.

CREATE TABLE amazon_ads_token_ledger (
    authorization_id text PRIMARY KEY,
    client_id        text NOT NULL,
    account_name     text NOT NULL,
    policy           text NOT NULL
                     CHECK (policy IN ('fixed_365', 'legacy', 'unknown')),
    consent_date     date,
    token_issued_at  timestamptz,
    expires_on       date GENERATED ALWAYS AS (
        CASE WHEN policy = 'fixed_365' THEN consent_date + 365 END
    ) STORED,
    last_refresh_ok  timestamptz,
    owner_email      text NOT NULL,
    status           text NOT NULL DEFAULT 'active'
                     CHECK (status IN ('active', 'revoked')),
    CHECK (policy <> 'fixed_365' OR
           (consent_date IS NOT NULL AND token_issued_at IS NOT NULL)),
    CHECK (policy <> 'fixed_365' OR
           (token_issued_at AT TIME ZONE 'UTC')::date >= DATE '2026-07-30'),
    CHECK (policy <> 'legacy' OR
           (token_issued_at IS NOT NULL AND
            (token_issued_at AT TIME ZONE 'UTC')::date < DATE '2026-07-30'))
);

CREATE INDEX ON amazon_ads_token_ledger (expires_on)
WHERE status = 'active';

expires_on ist ein konservativer Planungstermin: Einwilligungsdatum plus 365 Tage. Ein reiner Datumswert belegt keinen sekundengenauen Ablaufzeitpunkt auf Amazons Servern. Das Prüfskript behandelt den Beginn dieses UTC-Tages als kritische Planungsgrenze; die Erneuerung gehört deshalb vor diesen Tag. Eine generierte Spalte hält die Rechnung konsistent mit den gespeicherten Eingaben. Falsche Ausgangsdaten ergeben weiterhin falsche Termine.

3. Prüfskript mit ausdrücklichen Fehlerzuständen

Dieses Python-3-Beispiel benötigt Psycopg 3. Die Datenbankrolle braucht lediglich SELECT auf das Register. Die Verbindungsangaben stammen aus ADS_LEDGER_DSN; Zugangsdaten können über eine geschützte PostgreSQL-Passwortdatei oder passende Dienstkonfiguration bereitstehen. Das Beispiel begrenzt Verbindungs- und Abfragezeit und gibt bei Fehlern weder DSN noch Token-Inhalte aus.

#!/usr/bin/env python3
import os
import sys
import psycopg

WARN_DAYS = 60
QUERY = """
SELECT authorization_id, account_name, policy, expires_on,
       expires_on - CURRENT_DATE AS days_left, owner_email
FROM amazon_ads_token_ledger
WHERE status = 'active'
  AND (policy = 'unknown' OR expires_on <= CURRENT_DATE + %s)
ORDER BY expires_on NULLS FIRST, authorization_id
"""

def render(rows):
    result = 0
    for aid, name, policy, expires, days, owner in rows:
        if policy == 'unknown':
            state = 'UNKNOWN: authorization metadata needs review'
            result = 2
        elif days <= 0:
            state = 'DUE: planning deadline reached; check authorization'
            result = max(result, 1)
        else:
            state = f'WARNING: {days} days to planning deadline'
        print(f'{aid} | {name} | {state} | deadline={expires} | owner={owner}')
    return result

def main():
    dsn = os.environ.get('ADS_LEDGER_DSN')
    if not dsn:
        print('CHECK FAILED: ADS_LEDGER_DSN is missing', file=sys.stderr)
        return 2
    try:
        with psycopg.connect(dsn, connect_timeout=5,
                options='-c timezone=UTC -c statement_timeout=5000') as conn:
            rows = conn.execute(QUERY, (WARN_DAYS,)).fetchall()
    except psycopg.Error as exc:
        # No DSN, credentials or token contents in diagnostic output.
        print(f'CHECK FAILED: {type(exc).__name__}', file=sys.stderr)
        return 2
    return render(rows)

if __name__ == '__main__':
    sys.exit(main())

Exit-Code 0 bedeutet, dass kein kritischer Zustand gefunden wurde; Vorwarnungen erzeugen trotzdem Ausgabe. Exit-Code 1 meldet einen erreichten Planungstermin. Exit-Code 2 steht für unbekannte Autorisierungsdaten oder eine fehlgeschlagene Prüfung. Ein Monitoring-Wrapper muss diese Codes tatsächlich auswerten. Die 60-Tage-Schwelle ist ein anpassbarer organisatorischer Puffer, keine Amazon-Vorgabe und keine allgemein gemessene Freigabedauer.

4. Zeitplan und Zustellung

# Service-user crontab; working local mail transport required.
MAILTO=ads-ops@example.com
ADS_LEDGER_DSN="dbname=ops user=ads_ledger_reader"
17 6 * * * /opt/ads/venv/bin/python /opt/ads/token_ledger_check.py

Pfade und Datenbankrolle sind Beispiele für die Einrichtung. Die private Python-Umgebung benötigt Psycopg, und die lokale Anmeldung muss die lesende Rolle zulassen. Cron läuft um 06:17 Uhr in der konfigurierten Zeitzone des Schedulers; die SQL-Datumsberechnung verwendet ausdrücklich UTC. MAILTO benötigt funktionierenden lokalen Mailtransport und einen geprüften Empfänger. Das Skript versendet selbst keine E-Mail. owner_email kennzeichnet lediglich die Zuständigkeit und ist keine automatische Zustelladresse.

Solange ein Zustand besteht, kann die Ausgabe täglich eine Erinnerung auslösen. Eskalation, Bestätigung und Begrenzung der Nachrichtenanzahl gehören in das umgebende Monitoring. Ein unabhängiges Lebenszeichen oder eine Kontrolle ausgebliebener Läufe ist erforderlich, weil ein gestoppter Scheduler den eigenen Ausfall nicht melden kann. last_refresh_ok ist nur dann nützlich, wenn der Refresh-Prozess das Feld aktualisiert und eine separate Aktualitätsprüfung den Wert auswertet.

5. Erneuerung und Fehlerbehandlung

Ein ungültiges Refresh Token führt laut Amazon zu HTTP 400 mit invalid_grant. Ein Reporting-Job muss diesen Fehler melden, statt gültige Berichte durch leere Daten zu ersetzen. Bei Netzwerkfehlern können begrenzte Wiederholungen sinnvoll sein; einen ungültigen Grant reparieren Wiederholungen nicht. Die Wiederherstellung benötigt einen neuen Authorization Grant über den Einwilligungsablauf. Nach erfolgreicher Erneuerung werden Geheimnis und Register konsistent aktualisiert; anschließend folgen ein echter Access-Token-Tausch und eine minimale berechtigte API-Prüfung.

Fragen und Antworten

Was gilt bei unbekanntem ursprünglichem Einwilligungsdatum?

Die undurchsichtige Refresh-Token-Zeichenfolge ist kein verlässlicher Datumsnachweis. Vorhandene Autorisierungsprotokolle und Onboarding-Belege können das Datum belegen; andernfalls bleibt die Zeile unknown. Eine geplante Neuautorisierung kann eine neue protokollierte Einwilligung schaffen. Ein geschätztes Datum darf einen ungeklärten Zustand jedoch nicht stillschweigend als gesund ausweisen.

Benötigen Legacy-Tokens nach dieser Regel eine jährliche Erneuerung?

Für vor dem 30. Juli 2026 ausgestellte Tokens gilt nach der verlinkten Ads-Regel keine feste jährliche Frist. Widerruf und andere Ungültigkeitsgründe benötigen weiterhin Überwachung. Ein neu ausgestelltes Ersatz-Token ist anhand aktueller Ausstellungs- und Einwilligungsbelege einzuordnen; der gewöhnliche Access-Token-Refresh ist keine neue Einwilligung.

Lukas Wojcik

Lukas Wojcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Eine Frage oder eine Idee für ein Webprojekt? Schreib mir kurz, worum es geht. Das Formular nutzt reCAPTCHA zum Schutz vor Spam.

Kommentar schreiben

Erfahrungen aus der Praxis und Rückfragen zur Umsetzung sind hier willkommen.

Die E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind mit einem Stern versehen.