Привет, я пытаюсь использовать функцию Ionic Native Social Sharing:
shareViaFacebook (сообщение, изображение, URL)
У меня есть изображения, хранящиеся в хранилище firebase.
Я передаю image.downloadURL из firebase в аргумент изображения и аргумент url, и ни один из них не работает.
URL, который я передаю, - это
// "Public" unguessable URL, accessible by anyone with the link
// This is secured because that token is *very* hard for someone to guess
https://firebasestorage.googleapis.com/v0/bucket/object?alt=media&token=<token>
Я попытался использовать encodeURL и encodeURLComponent, но не могу заставить приложение ionic поделиться сохраненным изображением firebase в facebook.
Я могу поделиться другими фотографиями, такими как любая случайная фотография изображения Google, передав URL-адрес изображения в аргумент изображения.

Convert the image into base64 string and then send it to
shareViaFacebook()
Фрагмент рабочего кода
function shareImage(image) {
getImage(image)
.then(function(base64) {
// check for the required dependencies to avoid runtime JS errors
$window.plugins.socialsharing.shareViaFacebook(
'Add a message here..', // this message would auto-populate as caption
base64, // image to be shared in base64 format
null,
function(result) {
// This is successCallback()
},
function(error) {
// This is errorCallback()
}
);
});
}
function getImage(image) {
var deferred = $q.defer();
getBase64(URI,
function(image) {
deferred.resolve(image);
}
);
return deferred.promise;
}
// There are many ways to get base64 from URI.
// I followed Approach 2 from https://stackoverflow.com/a/20285053/2458543
function getBase64(src, callback, outputFormat) {
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function() {
var canvas = document.createElement('CANVAS');
var ctx = canvas.getContext('2d');
var dataURL;
canvas.height = this.naturalHeight;
canvas.width = this.naturalWidth;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
};
img.src = src;
// observation - if below code is removed, then image does not load correctly
if (img.complete || img.complete === undefined) {
img.src = src;
}
}
Некоторые из моих важных наблюдений при внедрении shareViafacebook()
successCallback() and errorCallback() for Android and iOS platforms are quite different
Android
Если приложение fb НЕ установлено - errorCallback (ошибка) вызывается, где [error = Array (all_apps)]
Если установлено приложение fb
Это не дожидается успешного обмена изображением и возвращается, как только откроется приложение facebook.
iOS
Если приложение fb НЕ установлено - errorCallback (ошибка) вызывается, где [error = "cancelled"]
Если установлено приложение fb
Это ожидает успешного обмена изображением и возвращается после завершения действия совместного использования.