通过外部PHP脚本将图像上传到Facebook

时间:2012-01-30 17:22:36

标签: php facebook flash upload photo

我为facebook开发了一个Flash测验应用程序,完成后会静默调用php脚本。 php脚本的功能是从flash发送的POST数据生成图像,然后将其发布到用户的墙上。

这将是所有整洁和花花公子,但由于某种原因图像永远不会上传,可能是因为当我调用它时,它就像http://www.myhost.com/appfolder/img-generate.php,并且里面的facebook SDK脚本得到Oauth错误,可能是因为它没有嵌入他们的画布。

我的问题是:

如果我想让我的php脚本生成图像并将其上传到fb墙,那么我应该如何从flash中调用它?

这是我目前正在使用的AS2代码:

callRemoteFile = function(ourVariable:Number) {
        var result_lv:LoadVars = new LoadVars();
    result_lv.onLoad = function(success:Boolean) {
                if (success) {
                        if (result_lv.message=="success")
                                trace("done! "+result_lv.returnValue);
                        else
                                trace(result_lv.message);
                } else {
                        trace("Error connecting to server");
                        return false;
                }
    };
    var send_lv:LoadVars = new LoadVars();
    send_lv.ourVariable = ourVariable;
    send_lv.sendAndLoad(" http://www.myhost.com/appfolder/img-generate.php", result_lv, "POST");
}
callRemoteFile(String(health.toString()));

这是img-generate PHP(我省略了大部分图像函数和获取POST数据,因为它们与我的问题无关):

include 'facebook.php';
$app_id = "111111111111111";
$app_secret = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
$facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret,
        'cookie' => true,
));

$date = date("ymdHis");

$im = imagecreatefromjpeg('myimg.jpg');
imagejpeg($im,'temp/'. $date . md5($ida) . '.jpg');

$facebook->setFileUploadSupport(
    "http://" . $_SERVER["SERVER_NAME"]
);

$photo = $facebook->api("/me/photos", "POST", array(
    source => "@" . 'temp/'. $date . md5($ida) . '.jpg',
    message => "Something to display with the image"
));

如果我只是使用我的浏览器导航到php,它会给我这个:

致命错误:未捕获OAuthException:无效的OAuth访问令牌签名。在第1039行的/home/a01223445/public_html/appfolder/base_facebook.php中引用

如果我通过facebook canvas查看相同的php,它的效果非常好。我的问题是:画布将显示闪存,我希望在闪存运行时静默评估php。

很抱歉这个很长的问题,

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我有同样的问题需要添加realpath()

$path = realpath('/'. $imgcode. '.jpg');
array(
        'source' =>  "@" . $path,
...