sales-channel-api - Gastkonto über Schnittstelle bekommen

Hallo zusammen,
ich habe ein Problem beim Abrufen der Kundendaten, wenn ich als Gast-Registriert bin.

Also registrierter Kunde greife ich auf folgende Schnittstelle zu:
 

$api_endpoint_url = 'sales-channel-api/v3/customer';

$request = $client->get($api_endpoint_url, [
                'headers' => [
                    'sw-access-key' => config('shopware.api_key'),
                    'Accept' => 'application/json',
                    'sw-context-token' => session('sw-context-token'),
                ]
            ]);

Wenn ich das ganze aber als registrierter Gast mache, bekomme ich folgende Meldung:

"status": "403"
"code": "CHECKOUT__CUSTOMER_NOT_LOGGED_IN"
"title": "Forbidden"
"detail": "Customer is not logged in."

Kann man als Gast nicht auf seine „registrierten“ Daten zugreifen? Muss ich die selbst persistieren?

Viele Grüße

Max

Um Daten von /customer zu bekommen, muss ein echtes Kundenkonto mit Login & Passwort existieren. Das kann man über /account/register anlegen, in das Konto einloggen mit /customer/login und über /checkout/guest-order die Bestellung ausführen. Nach dem einloggen kannst du dann auch Kontodaten mit /customer abfragen.

Welche Daten willst du eigentlich abfragen, die du nicht eh schon beim Anlegen der Gast-Bestellung hast?

Danke @AlexGalax‍ für deine Antwort.

Um Daten von /customer zu bekommen, muss ein echtes Kundenkonto mit Login & Passwort existieren. Das kann man über /account/register anlegen

Die Registrierung für registrierte Kunden habe ich schon angelegt. Dort hatte ich gesehen, dass es ein „Gast“-Parameter gibt.
Daher dachte ich, dass ich einen Gast über Guest => True anlegen und die Daten über /customer bekomme.

Welche Daten willst du eigentlich abfragen, die du nicht eh schon beim Anlegen der Gast-Bestellung hast?

Im Moment ist es so:

  • Produkt wird in den Warenkorb gelegt
  • Klick auf Checkout leitet auf Login-Seite
  • Login-Seite: Hier kann entschieden werden, ob Login/Registrierung/Gastbestellung
  • Bei Auswahl „Gastbestellung“ werden direkt Daten eingetragen, wie oben beschrieben über /customer mit Guest=>True angelegt
  • Im Checkout gibt es nun die Funktion, die Lieferadresse noch einmal anzupassen. Daher hatte ich die Hoffnung, dass ich das so machen kann, wie bei einem registriertem Kunden (Adresse hinzufügen/updaten usw.)

Über die Store-API kann ich ebenfalls keine Adressen eines Gast-Accounts auslesen/anlegen. Ein Blick in den Quellcode zeigt mir auch warum:

Hier steht:
@LoginRequired()

Möglich wäre hier ja auch:
@LoginRequired(allowGuest=true)

Gibt es sonst eine andere Möglichkeit, die Adressen auszulesen bzw. zu ändern? Das Shopware-Frontend macht das übrigens nicht über die Store-API, sondern mit einer Storefront Route /widgets/account/address-book, die ja nur HTML zurück liefert. Diese hat übrigens die Annotation @LoginRequired(allowGuest=true).

Update: Shopware hat eine entsprechendes Ticket erstellt: Shopware Issuetracker