Designupload auf Marktplatz funktioniert nicht

Hallo,

ich bin seit kurzem auf Spreadshirt und versuche mich gerade an der API.

Meine erste Frage ist, ist es möglich Designs mittels der API auf den Marktplatz (nicht in den eigenen Shop) hochzuladen?

Wenn ja warum funktioniert diese modifizierte Version der offiziellen Dukumentation (Quelle: https://developer.spreadshirt.net/display/API/Uploading+Designs+to+Spreadshirt+using+Spreadshirt+API+v1 ) eines Designuploads nicht (Fehler 401 Authorisation)

<?php // The design upload script shows you how to create designs on the Spreadshirt platform // and upload the corresponding design data using Spreadshirt data and image API. // 1. Create design entity via data api $url = "https://api.spreadshirt.net/api/v1/users/115562941/designs"; $header = array(); $header[] = createSprdAuthHeader("POST", $url); echo $header[0]; $header[] = "Content-Type: application/xml"; $xml = getFileData("design.xml"); // Initialize handle and set options $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTP_VERSION, URL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); $result = curl_exec($ch); // Close the handle curl_close($ch); $dataUrl = parseHttpHeaders($result, "Location"); echo "Design URL: ".$dataUrl."\n"; // 2. Fetch design data to retrieve upload url $ch = curl_init($dataUrl); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); $result = curl_exec($ch); // Close the handle curl_close($ch); $start = strpos($result, "resource xlink:href=\"")+21; $end = strpos($result, "\"", $start); $imageUrl = substr($result, $start, $end-$start); echo "Image URL: ".$imageUrl."\n"; // 3. Upload design data via image API $imageData = getFileData("animal.svg"); $header = array(); $header[] = createSprdAuthHeader("PUT", $imageUrl); $header[] = "Content-Type: image/png"; $ch = curl_init($imageUrl."?method=PUT"); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POSTFIELDS, $imageData); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); function createSprdAuthHeader($method, $url) { $apiKey = "[myAPIkey]"; $secret = "[myAPIsecret]"; $time = time()*1000; $data = "$method $url $time"; $sig = sha1("$data $secret"); return "Authorization: SprdAuth apiKey=\"$apiKey\", data=\"$data\", sig=\"$sig\""; } function parseHttpHeaders( $header, $headername ) { $retVal = array(); $fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $header)); foreach( $fields as $field ) { if( preg_match('/('.$headername.'): (.+)/m', $field, $match) ) { return $match[2]; } } return $retVal; } function getFileData($file) { $fp = fopen($file, "r"); $data = ""; while(!feof($fp)) { $data .= fgets($fp, 1024); } fclose($fp); return $data; } ?>

Ich habe mir gedacht, dass es vielleich daran liegt, dass in den Vorbedingungen definiert ist, dass der API key für das Uploaden von Designs freigeschaletet sein muss (“The API key needs to be configured for design upload usage.”), wenn dass noch gültig ist, dann wäre meine Frage, wie man den API Key für Designuploads freischaltet?

Danke

Hi,

jeder API Key ist automatisch für den Upload freigeschaltet. Um hochzuladen, musst du am besten vorher eine Session generieren und diese dann in den header mit übergeben.

Beispiel-Skripte für Uploads findest du hier:

P.s. Die Problematik mit neuen/alten Accounts ist dir bekannt und bewusst? (Bevor du viel Energie reinsteckst :))
P.s.s. PHP Skript in Aktion: https://youtu.be/9VD40vyTT_k (sehr alte Version meines Productors, die neue Version hat noch viel mehr Funktionen und ist weiter automatisiert)
P.s.s.s Browser-Automaten, also Mouse-Mover und Skripte sind aktuell recht angesagt - wie z.B. imacros und Keyboard Maestro oder Chrome-Plugins.

Gruß
Thimo

1 Like

Da er neu ist, vermutlich nicht.

Thimo meint, dass funktioniert nicht mit dem neuen Benutzerbereich zusammen.

2 Likes

Danke für die schnellen Antworten, werd ich versuchen,
[ich bin neu], hab ich das so richtig verstanden, ich kann zwar mittels der API Designs hochladen, werde diese aber im neuen Benutzerbereich nicht auffinden, sie sind jedoch online?
Das heißt um sie sehen zu können muss ich in den alten Benutzerbereich nachsehen?

Danke im Voraus :slight_smile:

Hi,

nein, die aktuelle API v1 kann nur mit dem alten Benutzerbereich zusammenarbeiten. Der neue Benutzerbereich nutzt eine andere API, die noch nicht veröffentlicht wurde.


Die neue API nutzt andere Endpunkte und eine abgewandelte Struktur. Bislang ist aber noch nicht viel darüber bekannt, außer was man per reverse-engeneering selbst herausfinden könnte. Da sich diese API v2 aber noch in der Entwicklung befindet, ist vom reverse-engeneering leider noch abzuraten :frowning:

Gruß
Thimo

Hi,
ich scheine das gleiche Problem zu haben - upload per API geht (Link auf Bild bei Spreadshirt geht auch) aber die Bilder/Designs werden nicht in Weboberfläche angezeigt. Mein Account wurde aber schon 2006 angelegt - ein Shop in 2012 und ein Shop in 2018.

Gibt es einen Link zum “alten Benutzerbereich” oder wie kann ich herausfinden ob ich zu den “alten Accounts” gehöre?

Vielen Dank,
Jörg

Lädst du auf /user hoch oder auf /shop?
Wenn du Designs bearbeiten möchtest, was steht dann in der url im Browser? partner.spreadshirt.xxx oder www.spreadshirt.de/…?

Ps. Für den alten Partnerbereich habe ich einen Uploader mit vielen weiteren Funktionen bereits vorhanden. Falls Interesse besteht, einfach über private Nachricht melden.

Gruß
Thimo

Bei mir steht “https://www.spreadshirt.de/userarea/…” und ich lade auf “…/v1/shops” hoch - "/user/ hatte ich mal versucht aber auth-Probleme und nicht weiter versucht.

Da ist das Problem :slight_smile: du musst auf /user hochladen. In meinem verlinkten Beitrag findest du eigentlich alles nötige zur Authentifizierung und zum Upload. Wie gesagt, habe ich auch etwas fertiges in petto :slight_smile:

Falls du es selbst versuchen möchtest und nicht weiter kommst (trotz des oben genannten Beitrags) melde dich gerne.

Super, hab das jetzt dank deines Quellkodes (https://pastebin.com/DweFNWAF) endlich geschafft und in PHP nachgebaut (https://pastebin.com/zs2Rh9aL)! Lag vor allem an dem Login Mechanismus und ich hatte vor lauter Kopieren irgendwie “.com” für den “/user” endpoint verwendet - und das funktionierte natürlich nicht mit der “.net” session ID.

Jetzt muss ich noch herausfinden wie man Tags und Kategorien übermittelt (name und description gehen ja gleich mit dem design.xml rüber) und am besten die Designs gleich zu veröffentlichen. Mein Ziel ist ja eine vollautomatische Pipeline aufzubauen.

Genau das habe ich mit meinem Tool bereits gemacht :wink:

Wenn du daran arbeitest, solltest du aber bedenken das die Api v1 nur für den alten Partnerbereich funktioniert…

Designs lassen sich momentan nicht hochladen bzw. erscheinen nicht nach dem Upload.
Ist das nur bei mir so?

Also hochladen funktioniert, aber die Designs erscheinen dann nicht?

1 Like

Genau so ist das

Danke für die Info. Wir checken!

1 Like

Betrifft in diesem Fall nur den alten Nutzerbereich.

Noch schlimmer: Neue Produkte mit alten Designs erscheinen nicht nach der Erstellung.
Ich kann einpacken :disappointed_relieved:

Unsere Entwickler arbeiten daran!

Ich weiß, es ist sehr heiß, aber sie sollen bitte Gas geben :pray:

Ich brauch bitte mal ein paar Beispiele. IDs, damit wir das nachvollziehen können.