Публикация изображения в API Pinterest

Я пытаюсь опубликовать изображение в Pinterest, используя их SDK (PDK). Конкретный метод, который я использую, это

PDK.request('/pins/', 'POST', {board: board.id, note: "description", link: "link", image_base64: "" }, function(e){ console.log(e) ; });

Существует три варианта отправки изображения.

  1. отправка image_url в объект опций.
  2. отправка image_base64 (URL-адрес данных), который показан в моем коде
  3. использование данных составной формы

документы Pinterest

Я могу использовать только варианты 2 и 3. Для вариантов 2 он работает для небольших изображений, пока dataURL не станет слишком большим. Pinterest API не имеет никаких полезных ошибок, когда это происходит, и это только мое предположение.

Альтернативой является использование данных составной формы, но я не уверен, как это сделать.

Может ли кто-нибудь помочь мне опубликовать, используя данные составной формы для публикации изображения?


person Henry L    schedule 26.07.2016    source источник
comment
Я тоже пытаюсь сделать то же самое и немного застрял. Я попытался создать объект new FormData и отправить его с помощью XMLHttpRequest с токеном в заголовке. Я закончил с ошибкой, говорящей No 'Access-Control-Allow-Origin' header is present on the requested resource.   -  person MCaw    schedule 27.07.2016
comment
не могли бы вы дать мне фрагмент кода ваших параметров, особенно там, где вы бы добавили токен авторизации? В настоящее время я использую PDK, вы используете ручной запрос?   -  person Henry L    schedule 27.07.2016
comment
Да, это не работает из-за ошибки, о которой я упоминал выше, но вот суть того, как выглядит мой код. let form = new FormData(); form.append('board', board.id); // ... the rest of the fields I need form.append('image', my_image); let ajax = new XMLHttpRequest(); ajax.onload = handlePintRes; ajax.open('POST', 'https://api.pinterest.com/v1/pins/?access_token=' + token); ajax.setRequestHeader('Authorization', 'BEARER ' + token ); ajax.send(form);   -  person MCaw    schedule 27.07.2016
comment
Не могли бы вы сказать мне, что такое my_image. Это base64 data_url?   -  person Henry L    schedule 27.07.2016
comment
Я попытался загрузить файл изображения. Я также попытался заменить это поле на image_base64, добавив все параметры в URL-адрес вместо формы (кроме файла изображения), а также повторив информацию как в URL-адресе, так и в форме.   -  person MCaw    schedule 27.07.2016


Ответы (1)


Я также не мог заставить их SDK работать, но я разобрался с этим, по крайней мере, для 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'
});

Надеюсь, поможет.

person Tom    schedule 09.12.2016
comment
Это был единственный способ, который работал и для меня. Когда я попытался использовать их решение base64, я получил ошибку перекрестного происхождения и строку с длинной ошибкой. - person Empi; 12.04.2017