React | Facebook JS API: код ошибки 100 при попытке загрузить несколько изображений в ленту моей страницы

#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 считает это уже загруженным.