Как отправить изображение Base 64 на Facebook - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь поделиться изображением холста в Facebook с помощью Graph API. Мне нужно преобразовать его в изображение Base 64 и загрузить в хранилище BLOB-объектов Facebook.Все работает нормально только тогда, когда мне нужно добавить отладчик в код и отладить его шаг за шагом, но если я непосредственно нажму кнопку «Поделиться» на Facebook, то это не будет доступно на Facebook.Пожалуйста, проверьте следующий код.

 window.fbAsyncInit = function () {
        FB.init({
            appId: '338935439835732',
            xfbml: true,
            version: 'v2.8'
        });
    };

    (function (d, s, id) {
        var js, fjs = d.getElementsByTagName(s)[0];
        if (d.getElementById(id)) { return; }
        js = d.createElement(s); js.id = id;
        js.src = "//connect.facebook.net/en_US/sdk.js";
        fjs.parentNode.insertBefore(js, fjs);
    }(document, 'script', 'facebook-jssdk'));

    $("#btnfacebook").on('click', function () {
        debugger;
        var data = getCanvas.toDataURL("image/png").replace(/^data:image\/png/, "data:application/octet-stream");
        var blob;
        try {
            var byteString = atob(data.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);
            }
            blob = new Blob([ab], { type: 'image/png' });
        } catch (e) {
            console.log(e);
        }
        var fd = new FormData();
        fd.append("source", blob);
        fd.append("message", "Photo Text");

        FB.login(function () {
            var auth = FB.getAuthResponse();
            alert(auth.accessToken);

                $.ajax({
                    url: "https://graph.facebook.com/" + auth.userID + "/photos?access_token=" + auth.accessToken,
                    type: "POST",
                    data: fd,
                    processData: false,
                    contentType: false,
                    cache: false,
                    success: function (data) {
                        console.log("success " + data);
                    },
                    error: function (shr, status, data) {
                        console.log("error " + data + " Status " + shr.status);
                    },
                    complete: function () {
                        console.log("Ajax Complete");
                    }
                }); 
        }, { scope: 'publish_actions' });
    });

Пожалуйста, помогите мне найти исправление

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...