2016-07-26 54 views
1

Ich versuche, ein Bild auf Pinterest mit ihrem SDK (PDK) zu posten. Die spezifische Methode, die ich verwende istImage an Pinterest API senden

PDK.request ('/ pins /', 'POST', { Board: board.id, Anmerkung: "description", Link: "link" , image_base64: "" }, Funktion (e) { console.log (e); });

Es gibt drei Möglichkeiten, das Bild zu senden.

  1. Senden der image_url im Optionsobjekt.
  2. Senden des image_base64 (Daten url), das ist das, was in meinem Code gezeigt wird
  3. ein mehrteiliger Formulardaten mit

Pinterest docs

kann ich nur Optionen verwenden, 2 und 3. Für Optionen 2 it funktioniert für kleine Bilder, bis die Daten-URL zu groß wird. Pinterest API hat keine hilfreiche Fehler, wenn dies auftritt, und dies ist nur meine Spekulation.

Die Alternative ist die Verwendung eines mehrteiligen Formulars Daten, aber ich bin mir nicht sicher, wie das geht.

Kann mir jemand helfen, mit den mehrteiligen Formulardaten für die Bildbuchung zu buchen?

+0

Ich versuche das Gleiche zu tun und bin ein bisschen stecken geblieben. Ich habe versucht, ein 'neues FormData'-Objekt zu erstellen und es mit XMLHttpRequest mit dem Token in der Kopfzeile POSTING. Ich endete mit einem Fehler, der besagt, dass 'No' Access-Control-Allow-Origin'-Header auf der angeforderten Ressource vorhanden ist. – MCaw

+0

Macht es Ihnen etwas aus, mir ein Code-Snippet Ihrer Params zu geben, insbesondere wo Sie das Authentifizierungs-Token hinzufügen würden? Ich verwende derzeit PDK, verwenden Sie eine handgemachte Anfrage? –

+0

Ja, es funktioniert nicht wegen des Fehlers, den ich oben erwähnt habe, aber hier ist ein Kern dessen, wie mein Code aussieht. 'let form = new FormData();' 'form.append ('board', board.id);' '// ... der Rest der Felder die ich brauche' ' form.append (' Bild 'my_image); '' lassen ajax = new XMLHttpRequest(); '' ajax.onload = handlePintRes; '' ajax.open ('POST',' https://api.pinterest.com/v1/pins /? access_token = '+ token); ' ' ajax.setRequestHeader (' Autorisierung ',' BEARER '+ Token); ' ' ajax.send (form); ' – MCaw

Antwort

2

Ich konnte auch nicht ihre SDK Arbeit machen, aber ich habe diese aussortiert, zumindest für DataURL:

var sendForm = new FormData(); 
sendForm.append('board', pathname); 
sendForm.append('note', label); 
sendForm.append('link', linkURL); 
sendForm.append('image_base64', dataUrl); 

var url = "https://api.pinterest.com/v1/pins/?access_token=" + window.pinterestAccessToken; 

$.ajax({ 
    url: url, 
    data: sendForm, 
    processData: false, //this is very important for making sure the formdata object is sent in the correct format 
    contentType: false, 
    type: 'POST' 
}); 

Hoffe, es hilft.

+0

Das war der einzige Weg, der auch für mich funktionierte. Als ich über ihre Base64-Lösung versuchte, bekam ich einen Cross-Origin-Fehler und einen String zu Long Error – Empi