#javascript #reactjs #facebook #facebook-graph-api #facebook-javascript-sdk
#javascript #reactjs #Facebook #facebook-graph-api #facebook-javascript-sdk
Вопрос:
В первой функции я загружаю несколько изображений page-id/photos
и получаю положительный ответ со всеми идентификаторами этих изображений.
Однако следующая часть — это то, где я застрял; Сейчас я пытаюсь создать сообщение с несколькими изображениями на временной шкале моей страницы Facebook. Однако я получаю странный ответ об ошибке, утверждающий, что я уже загрузил свои изображения.
Я даже следовал собственному примеру Facebook из их документации, используя Open Graph Explorer, но это просто возвращает другую ошибку
Функция отправки изображения:
(работает без проблем)
sendFacebookImagePost(page) {
const attached_media = []
for(let i = 0; i < this.state.upload_imgsrc.length; i ) {
let reader = new FileReader();
reader.onload = (e) => {
let arrayBuffer = e.target.result;
let blob = new Blob([arrayBuffer], { type: this.state.upload_imgsrc[i].type });
let data = new FormData()
data.append("source", blob)
data.append("message", this.state.fb_message)
data.append("no_story", true)
data.append("published", true)
axios({
method: "post",
url: "https://graph.facebook.com/" page.id "/photos?access_token=" page.accessToken,
data: data
})
.then(response => {
attached_media.push({media_fbid: response.data.id})
if (attached_media.length === this.state.upload_imgsrc.length) {
this.sendFacebookPost(page, attached_media)
}
})
.catch(error => {
console.log(error);
})
}
reader.readAsArrayBuffer(this.state.upload_imgsrc[i]);
}
}
Функция отправки сообщения:
(Вот где возникает ошибка)
sendFacebookPost(page, attached_media) {
let data = {
message: this.state.fb_message,
link: this.state.fb_link,
attached_media: attached_media
// this is what attached_media returns:
// [
// {media_fbid: response.data.id},
// {media_fbid: response.data.id}
// ]
}
axios({
method: "post",
url: "https://graph.facebook.com/" page.id "/feed?access_token=" page.accessToken,
data: data
})
.then( () => this.setState({fb_successMessage: "Post successful!", fb_errorMessage: ""}) )
.catch(error => {
console.log(error);
})
}
Код ошибки
error: {
code: 100
error_subcode: 1366051
error_user_msg: "These photos were already posted."
error_user_title: "Already Posted"
fbtrace_id: "Cl9TUTntOZK"
is_transient: false
message: "Invalid parameter"
type: "OAuthException"
}
Моя попытка открыть Graph Explorer
Ответ №1:
Проблема решена.
Часть, которая пошла не так, заключается в том, что я добавляю следующее в свой пост с изображением:
data.append("published", true)
.
По-видимому, изображения, которые вы хотите использовать в публикации с несколькими фотографиями, должны быть установлены published: false
, прежде чем их можно будет использовать в публикации. В противном случае Facebook считает это уже загруженным.