2015-04-09 3 views
0

Я работаю над проектом расширения chrome, и я пытаюсь загрузить фотографию на альбом facebook, но он всегда возвращает следующий ответ, независимо от того, какое изображение я пытаюсь загрузить.javascript- facebook uploading photo

{ 
    "error": { 
     "message": "This message contains content that has been blocked by our security systems.", 
     "type": "OAuthException", 
     "code": 368 
    } 
} 

Вот мой код:

var canvas = document.createElement('CANVAS'); 
 
\t var ctx = canvas.getContext('2d'); 
 
\t var img = new Image; 
 
\t img.crossOrigin = 'Anonymous'; 
 
\t img.onload = function(){ 
 
\t \t canvas.height = img.height; 
 
\t \t canvas.width = img.width; 
 
\t \t ctx.drawImage(img,0,0); 
 
\t \t var dataURL = canvas.toDataURL('image/png'); 
 
\t \t blob = dataURItoBlob(dataURL); 
 
\t \t goon(blob); 
 
\t \t canvas = null; 
 
\t }; 
 
\t img.src = "image url"; 
 

 
function dataURItoBlob(dataURI) { 
 
var byteString = atob(dataURI.split(',')[1]); 
 
var ab = new ArrayBuffer(byteString.length); 
 
var ia = new Uint8Array(ab); 
 
for (var i = 0; i < byteString.length; i++) { 
 
    ia[i] = byteString.charCodeAt(i); 
 
} 
 
return new Blob([ab], { type: 'image/png' }); 
 
} 
 
       
 
             
 
function goon(kkv){ 
 
\t var formdata= new FormData(); 
 

 
formdata.append("access_token", "Acces token"); 
 
formdata.append("message", "test message"); 
 
formdata.append("source", kkv); 
 
formdata.append("privacy", "{'value':'EVERYONE'}"); 
 
try { 
 
    $.ajax({ 
 
     url: 'https://graph.facebook.com/me/photos', 
 
     type: "POST", 
 
     data: formdata, 
 
     processData: false, 
 
     contentType: false, 
 
     cache: false, 
 
     error: function (shr, status, data) { 
 
      console.log("error " + data + " Status " + shr.status); 
 
     }, 
 
     success: function (msg) { 
 
      //successful 
 
     } 
 
    }); 
 
} catch (e) { 
 
    console.log(e); 
 
} 
 
}

Я использую facebook график апи v2.3, чтобы получить маркер доступа (с расширенными правами)

Я попытался использовать параметр url insted источника, но он дал мне тот же ответ

formdata.append("url", 'image url'); 

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

ответ

0

Нет, вам нужен токен доступа для публикации в facebook программно. Я получаю аналогичную ошибку, и мои исследования, похоже, указывают на то, что она связана с частотой, в которой вы публикуете URL-адрес. Особенно, если вы используете и приложение, а домен url находится вне домена приложения. Лучший ответ - либо публиковать менее часто, либо использовать API объявлений Facebook, но тогда вы можете столкнуться с затратами.

+0

Поскольку вы сказали, что речь идет о частоте, я пробовал с новой учетной записью facebook на другом компьютере. Я получил тот же ответ. Я не использую приложение, я пытаюсь использовать код на консоли хром. – user3870671

+0

Хорошо, может быть, проблема в том, что вы получите команду. Параметр для pic url - это «изображение». Вам также необходимо использовать токен с установленными правами и использовать край подачи для публикации. Можете ли вы ответить с помощью команды HTTP POST, которую передает ваш код? Также см. Страницу ref FB для списка параметров: https://developers.facebook.com/docs/graph-api/reference/v2.3/post – tekNorah

+0

Я использую точно такой же код в своем первом сообщении. Он работает для фида (параметр изображения), но я хочу загрузить фотографию в альбом, не отправляющий на стену. Я уверен, что у меня есть правильное разрешение (publish_actions). Итак, я думаю, что это правильная страница ref: https: // developers.facebook.com/docs/graph-api/reference/v2.3/photo – user3870671