2

1 つの投稿に複数の写真を添付する必要があるアプリケーションを作成しようとしています。これらは私が試した次の試みです、

最初に、JS SDK がさまざまな機能を実現するためにfacebook-node-sdkを使用しましたが、公式の Js Sdk にはファイルをアップロードするオプションがありませんform-data。次のコード-

    var form = new FormData();
    form.append('file', fs.createReadStream(picPaths[0]));
    form.append('message', "Hello"); //Put message
    var ACCESS_TOKEN = "ACCESS_TOKEN";
    var options = {
        method: 'post',
        host: 'graph.facebook.com',
        path:  '{Object-ID}/photos' + '?access_token=' + ACCESS_TOKEN,
        headers: form.getHeaders(),
    }

    var request = https.request(options, function(res) {
        console.log(res, false, null);
    });

    form.pipe(request);

    request.on('error', function(error) {
        console.log(error);
    });

これは1枚の写真で機能します。

しかし、私が開始したこの github.com/Thuzi/facebook-node-sdk/issues/113 でわかるように、複数の写真を添付することはできません。

で述べたように、バイナリ データのアップロードdantmanの下にある developers.facebook.com/docs/graph-api/making-multiple-requests というバッチ プロセスを参照してください。私に希望を与えてくれる唯一のことは、この1つの声明です。

attachment_files プロパティは、その値に添付ファイル名のカンマ区切りのリストを取ることができます。

このライブラリまたは JS SDK では (写真を使用したバッチ処理) もできないことに注意してください (間違っている場合は修正してください)

このようにcurlで画像を投稿できます。

curl -F 'access_token=ACCESS_TOKEN' -F 'batch=[{"method":"POST","relative_url":"{Object-Id}/photos","body":"message=Test Post","attached_files":"file1"}]' -F 'file1=@image1' -F 'file2=@image2' https://graph.facebook.com

上記のコードは 1 つの画像で投稿します

だから私の質問はこれです.curlの助けを借りて複数のimages/binary_filesを投稿に添付することは可能です。..."attached_files":"file1,file2"...ドキュメントで提案されているように、この問題を手伝ってください.すでにこれを行っている場合は、あなたのコード。

ありがとう、ラヴィ

4

2 に答える 2

-1

これは可能です。

注:これはこれを行う効率的な方法ではありませんが、ここで行っている目的を説明するためだけに、

それが可能かもしれないという最初のヒントは、この投稿からです

私が使用した手順:

  1. ドキュメントに従って、カスタム オープン グラフ ストーリーを作成します。
  2. 添付する 4 つの画像を想定してみましょう (pic[1, 2, 3, 4])
  3. facebook-node-sdk v1.1.0-alpha1最初に、このようなコードを使用してnew の助けを借りてそれらをステージングしました(バッチプロセスを使用)。

    FB.api( "", "post", {
        batch: [
        {
            method: "POST",
            relative_url: "me/staging_resources",
            attached_files: "file1",
            type:"image/png"
        }, {
            method: "POST",
            relative_url: "me/staging_resources",
            attached_files: "file2",
            type:"image/png"
        }, {
            method: "POST",
            relative_url: "me/staging_resources",
            attached_files: "file3",
            type:"image/png"
        }, {
            method: "POST",
            relative_url: "me/staging_resources",
            attached_files: "file4",
            type:"image/png"
        }],
        file1: fs.createReadStream(picPaths[0]),
        file2: fs.createReadStream(picPaths[1]),
        file3: fs.createReadStream(picPaths[2]),
        file4: fs.createReadStream(picPaths[3])
    },
    function(response) {
        console.log(response);
    });
    
  4. 応答部分からURLを取得し、同じライブラリを使用して投稿をディスします。このようなコードで。

    FB.api(
        "me/objects/{app-namespace}:{custom-object}",
        "post", {
            "object": {
                "og:title": "Sample Post",
                "og:image[0]": {
                    "url": "fbstaging:{...}",
                    "user_generated": true
                },
                "og:image[1]": {
                    "url": "fbstaging:{...}",
                    "user_generated": true
                },
                "og:image[2]": {
                    "url": "fbstaging:{...}",
                    "user_generated": true
                },
                "og:image[3]": {
                    "url": "fbstaging:{...}",
                    "user_generated": true
                }
            }
        },
        function(response) {
            console.log(response);
        }
    );
    

これら 2 つのコードを使用すると、複数の画像/写真を 1 つの投稿にプッシュできます。

注: これはより理にかなっている可能性があり、ここで説明されている名前付きバッチ プロセスを使用して実行することもできます。

ありがとう、ラヴィ

于 2016-01-26T19:49:35.187 に答える