Опубликовать видео по URL-адресу на facebook, используя API-интерфейс facebook?

У меня есть страница facebook, и я пытаюсь загрузить видео, которое уже размещено на моих серверах. Мне нужно сделать это через javascript, и все, что у меня есть, это ссылка src (что-то вроде https://cdn.whodaman.net/Q45rt7y.mp4) видео. Будучи администратором, у меня есть все необходимые разрешения (publish_stream, manage_pages).

facebook api говорит, что я должен отправить данные как multipart/form-data, что означает видеоконтент. Чтобы сделать это с помощью ajax, я выполнил этот вопрос в stackoverflow и последовал Как отправить объекты FormData с помощью Ajax-запросов в jQuery.

Здесь мой код javascript:

var fd = new FormData();
fd.append( 'source', 'https://cdn.whodaman.net/Q45rt7y.mp4' );
fd.append( 'access_token', testaccessToken);
fd.append( 'title', "Test Video");
$.ajax({
  url: "https://graph-video.facebook.com/"+testPageId+"/videos",
  data: fd,
  processData: false,
  contentType: false,
  type: 'POST',
  beforeSend: function(xhr) { 
    xhr.setRequestHeader('Content-Type', 'multipart/form-data'); 
  }
});

Здесь запрос и соответствующий ответ:

    Request URL:https://graph-video.facebook.com/[my page id]/videos
    Request Method:POST
    Status Code:400 Bad Request
Request Headers Accept:*/* Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Cache-Control:no-cache Connection:keep-alive Content-Length:948 Content-Type:multipart/form-data Cookie: [some cookie data] Host:graph-video.facebook.com Origin:http://real.domain.com:8090 Pragma:no-cache Referer:http://real.domain.com:8090/test/upload User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 Request Payload ------WebKitFormBoundaryd8laVBo5HXRTFJnn Content-Disposition: form-data; name="source" https://cdn.whodaman.net/Q45rt7y.mp4 ------WebKitFormBoundaryd8laVBo5HXRTFJnn Content-Disposition: form-data; name="access_token" [my access token] ------WebKitFormBoundaryd8laVBo5HXRTFJnn Content-Disposition: form-data; name="title" Test Video ------WebKitFormBoundaryd8laVBo5HXRTFJnn-- Response Headers Access-Control-Allow-Origin:* Cache-Control:no-store Connection:keep-alive Content-Length:146 Content-Type:application/json; charset=UTF-8 Date:Mon, 11 Nov 2013 13:50:45 GMT Expires:Sat, 01 Jan 2000 00:00:00 GMT Pragma:no-cache WWW-Authenticate:OAuth "Facebook Platform" "invalid_token" "An access token is required to request this resource." X-FB-Debug:HlhHF7eIBkLbUBktqeWnVv8V3viIeS8jom0WPt1D7fc= X-FB-Rev:1000997

Facebook запрашивает токен доступа! Я уверен, что у меня есть правильный выбор, потому что я могу добавить сообщение о статусе текста. Я также попытался изменить имя параметра file в данных формы от source до file без эффекта.

Так можно ли загружать видео в facebook через js sdk прямо из видеоролика? У меня такое чувство, и я довольно близко к решению.

Ответ 1

Выполните POST-запрос на график api Используя поле file_url, чтобы указать URL-адрес вашего видео и избавиться от исходного поля, нет необходимости в multipart/form-data.