2016-07-26 3 views
1

J'essaie d'afficher une image sur Pinterest en utilisant leur SDK (PDK). La méthode spécifique que je utilise estPublier une image sur l'API Pinterest

PDK.request ('/ broches /', 'POST', { Conseil: board.id, Note: "description", lien: "lien" , image_base64: "" ", fonction (e) { console.log (e); });

Il existe trois options pour envoyer l'image. Envoi de l'image_url dans l'objet options.

  1. envoyer le image_base64 (url de données) qui est ce qui est montré dans mon code
  2. en utilisant des données de formulaire multipart

Pinterest docs

Je ne peux utiliser les options 2 et 3. Pour les options 2 il fonctionne pour les petites images jusqu'à ce que dataURL devienne trop grand. API Pinterest n'a pas d'erreurs utiles lorsque cela se produit et ce n'est que ma spéculation. L'alternative consiste à utiliser des données de formulaire en plusieurs parties, mais je ne suis pas sûr de la façon de le faire.

Quelqu'un peut-il m'aider à poster en utilisant les données de formulaire en plusieurs parties pour la publication d'images?

+0

J'essaie de faire la même chose aussi et je me suis un peu coincé. J'ai essayé de créer un nouvel objet FormData et de le POSTer avec XMLHttpRequest avec le token dans l'en-tête. Je me suis retrouvé avec une erreur disant que l'en-tête «Access-Control-Allow-Origin» est présent sur la ressource demandée. – MCaw

+0

cela vous dérange-t-il de me donner un extrait de code de vos paramètres, en particulier où ajouter le jeton auth? J'utilise actuellement PDK, utilisez-vous une demande faite à la main? –

+0

Oui, ça ne marche pas à cause de l'erreur que j'ai mentionnée ci-dessus mais voici un aperçu de ce à quoi ressemble mon code. 'let form = new FormData();' 'form.append ('board', board.id);' '// ... le reste des champs dont j'ai besoin' ' form.append (' image ', my_image); ' ' let ajax = nouveau XMLHttpRequest(); ' ' ajax.onload = handlePintRes; ' ' ajax.open (' POST ',' https://api.pinterest.com/v1/pins /? access_token = '+ jeton); 'ajax.setRequestHeader (' Authorization ',' BEARER '+ jeton);' 'ajax.send (form);' – MCaw

Répondre

2

je ne pouvais pas faire aussi leur SDK travail, mais j'ai trié ce, au moins pour 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' 
}); 

Hope it helps.

+0

C'était la seule façon qui a fonctionné pour moi aussi. Quand j'ai essayé via leur solution base64, j'ai une erreur d'origine croisée et une chaîne pour une erreur longue – Empi