Почему я получаю 404 ("Ресурс медиа не найден") при загрузке медиа из документов? - PullRequest
0 голосов
/ 26 июня 2019

Документы для загрузки мультимедиа в LinkedIn (https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/rich-media-shares#upload-rich-media) говорят, чтобы сделать POST до https://api.linkedin.com/media/upload с данными формы. Насколько я могу судить, я делаю это правильно, используя request-promise на моем Узловой сервер, но я все еще получаю 404.

Изначально у меня была проблема с моим файлом, но теперь я думаю, что я правильно создаю буфер. Даже если бы я не был, это мешало мне даже сделать запрос, и теперь я, и я не думаю, что это приведет к 404.

Я также пытался использовать 1.0.0 и 2.0.0 версии X-Restli-Protocol-Version (API LinkedIn).

// See LinkedIn docs on Rich Media shares https://docs.microsoft.com/en-us/linkedin/marketing/integrations/community-management/shares/rich-media-shares

const stream = require('stream');
const rp = require('request-promise')

async function postRichMediaShare(accessToken) {
  try {
    const file = await rp({
      method: 'get',
      url: 'https://local-image-bucket.s3.amazonaws.com/Artboard+copy.png'
    });

    // Buffer magic
    const buffer = new Buffer.from(file);
    const bufferStream = new stream.PassThrough();
    bufferStream.end( buffer );
    bufferStream.pipe( process.stdout );

    const options = {
      method: 'post',
      url: 'https://api.linkedin.com/v2/media/upload',
      headers: { 'X-Restli-Protocol-Version': '2.0.0',
      "Authorization": `Bearer ${accessToken}` },
      formData: {
        file: {
          value: bufferStream,
          options: {
            filename: 'Artboard+copy.png',
            contentType: 'image/png'
          }
        }
      },
    };

    const response = await rp(options);
    console.log("response", response);

    return response;
  } catch (error) {
    throw new Error(error);
  }
}

Вместо ответа, предложенного в документации, я получаю сообщение об ошибке от LinkedIn:

error: "{"serviceErrorCode":0,"message":"Resource media does not exist","status":404}"

1 Ответ

0 голосов
/ 26 июня 2019

Я идиот. 404 следовало ожидать, потому что я запрашиваю https://api.linkedin.com/v2/media/upload, а в документах написано https://api.linkedin.com/media/upload (нет v2/). Я верю, что все остальные звонки версионны. Возможно, уполномоченный сотрудник LinkedIn, читающий это, мог бы создать маршрут для v2/, который делает все то же самое.

Обратите внимание, что с кодом выше могут быть другие проблемы, я все еще борюсь, но сейчас я работаю над вещами, выходящими за рамки этого вопроса о 404.

...