Facebook模块对话框错误图片格式不正确

时间:2014-11-21 23:54:10

标签: android facebook image formatting titanium

如何在Titanium的Facebook模块对话框中添加图片?在Titanium的示例中,对话框中的图片属性是网站图片的链接:

var data = 
{
    link : "http://www.appcelerator.com",
    name : "Appcelerator Titanium Mobile",
    message : "Checkout this cool open source project for creating mobile apps",
    caption : "Appcelerator Titanium Mobile",
    picture : "http://developer.appcelerator.com/assets/img/DEV_titmobile_image.png",
    description : "You've got the ideas, now you've got the power. Titanium translates " +
              "your hard won web skills into native applications..."
};

fb.dialog("feed", data, function(e) 
{
    if(e.success && e.result) 
    {
        alert("Success! New Post ID: " + e.result);
    } 
    else 
    {
        if(e.error) 
        {
            alert(e.error);
        } 
        else 
        {
            alert("User canceled dialog.");
        }
    }
});

但是,如果您想使用本地图片而不是通过此类网站的链接,该怎么办?

var data = 
{
    link: "http://play.google.com/",
    name: "Android app's name",
    picture: "file:///data/data/com.appid/app_appdata/directory/name-of-image.jpg"
};

如果我使用上面的代码,我会得到图片属性格式错误。有关视觉参考,请参阅此图片:http://postimg.org/image/wjefdlalb/

我尝试过像这样使用FileSystem:

function getFile() 
{
    var imageFileToPost;
    var imageFile = Ti.Filesystem.getFile("file:///data/data/com.appid/app_appdata/directory/name-of-image.jpg");

    if (imageFile.exists()) 
    {
        console.log("exists");
        imageFileToPost = imageFile.read();
    }

    return imageFileToPost;
}

var data = 
{
    link: "http://play.google.com/",
    name: "Android app's name",
    picture: getFile() 
};

帖子很成功,没有错误,但图片没有在Facebook上发布。

注意:我会使用图表,但我需要使用'publish_actions'这样的权限,这意味着我必须让Facebook审核该应用,但他们不喜欢预填充消息,即使用户也是如此无论如何都可以编辑消息。那么这真的只是Facebook模块对话框的格式化问题,还是只需要图片的网址?如果这是一个格式问题,有人可以告诉我如何正确格式化,因为我真的需要使用本地的图片,而不是网站上的图片吗?

1 个答案:

答案 0 :(得分:0)

答案可能有点晚,但最近我遇到了同样的问题。

目前版本的Facebook模块似乎无法创建一个共享本地图像的对话框。

因为我还需要为我的某个应用程序使用此功能,所以我分叉了模块(https://github.com/dthulke/ti.facebook)并添加了一个方法presentPhotoShareDialog,它将图像blob作为参数。不幸的是,它只适用于安装原生Facebook应用程序。

示例:

if (fb.getCanPresentShareDialog()) {
    fb.presentPhotoShareDialog({
        imageBlob : view.toImage()
    });
}