如何使用 API 将媒体附加到 Facebook Post

How to attach Media to a Facebook Post using the API

我已按照 Facebook 文档请求访问令牌和 post 到 Facebook 页面

现在,我想创建一个 post 并在其中附加一些照片 post 但 Facebook 仅 post 正文而不包括照片文件。

我是这样做的:

   ...
    let mediaIds = [];
    for (let photoUrl of photoUrls) {
        let mediaUploadUrl = `https://graph.facebook.com/${pageId}/photos?url=${photoUrl}&access_token=${pageAccessToken}`;
        let response = await axios.post(mediaUploadUrl);
        let { id } = response.data;
        if (id) {
            mediaIds.push(id);
        }
    }

    // Now that we have the mediaIds, let's attach them to the post as below:

    let urlParams = new URLSearchParams();
    urlParams.append("access_token", pageAccessToken);
    urlParams.append("message", "Hello World");
    
    let postUrl = `https://graph.facebook.com/${pageId}/feed`;

    if (mediaIds.length > 0) {
        for (let i = 0; i < mediaIds.length; i++) {
            let mediaId = mediaIds[i];
            let mediaIdObject = { media_fbid: mediaId };
            urlParams.append(`attached_media[${i}]`, mediaIdObject);
        }
    }
    
    try {
        let { data } = await axios.post(postUrl, urlParams);
        let postId = data.id;
    } catch (e) {
        done = false;
        console.log(e); //An unknown error has occurred is the error message I keep getting
    }
    ...

我一直在return得到的是

An unknown error has occurred

但是,如果我转到 Facebook 页面,我会注意到正文是 posted 而不是照片附件。

如有任何解决此问题的想法,我们将不胜感激。

将对象附加到 urlParams,就像您在

中所做的那样
let mediaIdObject = { media_fbid: mediaId };
urlParams.append(`attached_media[${i}]`, mediaIdObject);

产生一个 URL 参数,如

attached_media[0]=[object Object]

使用

urlParams.append(`attached_media[${i}]`, JSON.stringify(mediaIdObject));

相反。