Kann also nicht an der Methode liegen, nur bin ich nicht sicher, einmal wird die Zeit mit reingenommen zum Hashen und ein anderes Mal wieder nicht. Was ist richtig und was mache ich falsch?
auf jeden Fall schon mal immer den useragent mitschicken und einen timestamp anstatt deines genutzten Datumsformats. Zudem sollte der Secret mit im hash sein.
Für den Zugriff auf /user solltest du vorher noch eine Session anlegen, falls noch nicht geschehen.
Ein Beispiel in Python:
Zum Verständnis die Funktion time liefert den Unix timestamp.
P.s. Fertige Bulk-uploader in PHP (als webservice u.a.) habe ich sonst auch
P.s.s. Du entwickelst auf der alten api, nächstes Jahr soll eine neue kommen, soweit ich gelesen habe. Einige Funktionen funktionieren jetzt schon nicht mehr für den neuen Partnerbereich (Produkterstellung,…). Im alten Partnerbereich läuft die api noch komplett.
Danke für die Antwort, es klappt leider trotzdem nicht. Wann müssen welche Parameter gehasht werden?
Wie gesagt, wird in diesem offiziellen Beispiel, der Zeitstempel nicht mit gehasht: https://developer.spreadshirt.net/display/API/Security
Folgendermaßen sieht meine URL aus, die immer die gleiche Meldung ausgibt:
Der Hashwert wird aus dem folgenden String zusammengebaut:
GET h ttps://api.spreadshirt.net/api/v1/users/115417255/designs 1526150001
Ich probiere das momentan manuell aus und gebe das in den Browser ein, damit sollte User Agent vorhanden sein. Anonsten habe ich mir dein Beispiel in Phyton angeschaut und es exakt so nachgebaut, leider gehts trotzdem nicht.
User-Agent in dem entsprechenden Format (nicht Browser…)
Die Url-Parameter brauchst du nicht mehr, wenn du den korrekten authorization header mitschickst. Sowieso sollten diese Parameter nicht in der URL auftauchen
Versuche dich weniger an die API-Dokumentation zu halten, als am Python Skript von mir. Das ist aktueller als die API-Dokumentation und enthält schon die neuesten Änderungen der API.
Ich kann jetzt kein C#, aber wenn du es, so wie das Python Skript gemacht hast und diese Version als Pastbin posten könntest, kann ich es mir anschauen.
Ich wollte das erstmal zum laufen kriegen und es dann vernünftig implementieren
Warum wird die Doku nicht als deprecated markiert und wo finde ich die aktuelle Doku?
Hier mein Code, es geht hier erstmal nur um die Signatur:
Die Doku ist in dem Teil aktuell - einiges ist deprecated (URL Parameter), aber wie gesagt, vieles wurde in den Blogs geschrieben. Mein o.g. Python-Code ist damit komplettiert worden (wie auch meine anderen PHP Skripte).
Sofern unter SecurityRessources.getSecretKey() dein Spreadshirt API-Secret hinterlegt ist und über HashString ein korrekter SHA1 generiert wird (z.b. http://www.sha1-online.com), sollte die sig richtig sein. Die sig ist aber nur ein kleiner Teil der kompletten Authentifizierung und kann meines Wissens nicht alleine getestet werden.
So sollte der Auth. Header aussehen, um auf deine User-Designs zuzugreifen: Authorization: SprdAuth apiKey="<apikey>", data="<method> <url> <time>", sig="SHA1(<method> <url> <time> <secret>)", sessionId="<sessionId>"
Wenn du das so hast, dann noch den User-Agent so übertragen: Test/1.0 (http://www.xxx.de; username@email.de)
Baue dir am besten ein CURL Beispiel mit Header (Auth und User-Agent) und teste es daran.
Sollte damit beantwortet sein
Wenn du diesen Bereich deines Codes nicht öffentlich machen willst, kannst mir auch gern eine Nachricht schicken, dann schaue ich es mir so an.
Danke für deine Hilfe, ich bin leider nicht weitergekommen. Er sagt mir jedes mal, dass mein Api-Key oder die Signatur ungültig ist. Langsam glaube ich wirklich das mein ApiKey ungültig ist.
Bin umgestiegen auf diese drei Seiten damit das testen schneller geht:
Auf dieser Seite (unter Preliminaries, Punkt 2) wird gesagt, man solle den ApiKey für Design-Uploads konfigurieren. Was genau bedeutet es und wie mache ich das?
Jeder api key sollte das bereits können. Alle aktuellen - deiner wird sicherlich nicht so alt sein.
Aber kannst gerne an partner@ schicken und deinen key testen (neu erstellen) lassen.
Hast du deine Daten mal in das Python Skript gepackt? Funktioniert es damit?
Wenn ja, dann alles top und wir sollten uns deinen Code anschauen. Wenn nein, dann api key neu generieren lassen.
Wie gesagt, ich helfe dir da gerne weiter, aber langsam muss ich da etwas sehen, um dir weiterhelfen zu können
Ok nun gibt es die Meldung ich solle eine gültige Session liefern. Meine Session wird nachdem Login erstellt und diese verwende ich auch, kann also nicht abgelaufen sein. So siehts aus:
Ich glaube dein Header ist noch nicht korrekt, kommst du an den generierten Header dran und könntest den mal posten? Im Python, und deswegen meine ich die Kommata sind falsch, sieht es so aus:
Du siehst das User-Agent und Content-Type nicht teil des Authorization-Teils sind. Also SprdAuth apiKey="XXX", data="GET https://api.spreadshirt.net/api/v1/users/XXX/designs 1526549406000", sig="XXX", sessionId="XXX" ist ein kompletter String.
Bei der Methode “AddHeader” konnte ich den Namen übergeben, beim Debuggen stand da aber User Agent =, auch bei Authorization war das Gleichheitszeichen. Dann hab ich halt angefangen den Doppelpunkt da reinzupfuschen, deswegen ist der Name doppelt drin. Fiddler hat mir dann aber den “echten” Header angezeigt.
Beim User Agent ist das nicht schlimm aber bei dem Authentikator hab ich das rausgenommen und es funktioniert jetzt