我无法将用户脸部资料图片的网址传递给Loader()变量。我正在使用PHP文件来绕过安全性,并且从我做的调试中,它显示我正在获取URL,但是Loader运行错误事件监听器。这是我的facebookProxy.php文件的样子;
<?php
$path=$_GET['path'];
header("Content-Description: Facebook Proxied File");
header("Content-Type: image");
header("Content-Disposition: attactment; filename =".$path);
@readfile($path);
?>
这是我加载网址然后加载图片的代码。
function LoadMyPicture():void
{
debug.text = "Entered loadMyPicture() function";
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, MyPictureLoaded, false, 0, true);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, MyPictureLoadError, false, 0, true);
var request:URLRequest = new URLRequest("facebookProxy.php");
var variables:URLVariables = new URLVariables();
variables.path = Facebook.getImageUrl(Facebook.getSession().uid);
request.data = variables;
loader.load(request);
addChild(loader);
debug.appendText(" \nURLRequest url: " + request.url);
debug.appendText(" \nURLRequest data: " + request.data);
debug.appendText(" \n" + loader.content);
}
function MyPictureLoaded(e:Event):void
{
debug.appendText(" \nEntering MyPictureLoaded");
var loader:Loader = e.target.loader;
var bitmap = Bitmap(loader.content);
bitmap.smoothing = true;
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, MyPictureLoaded);
loader.contentLoaderInfo.removeEventListener(IOErrorEvent.IO_ERROR, MyPictureLoadError);
debug.appendText(" \nLoader Content: " + loader.content);
//Note: picturePlaceholder is just a blank movie clip on the Stage
bitmap.width = picturePlaceHolder.width;
bitmap.height = picturePlaceHolder.height;
picturePlaceHolder.addChild(bitmap);
debug.appendText(" \nBitmap width: " + String(bitmap.width) +
" \nBitmap height: " + String(bitmap.height))
}
function MyPictureLoadError(e:Event):void
{
debug.appendText(" \nMyPictureLoadError: Loader Error!");
}
debug.appendText(“\ nURLRequest url:”+ request.url);
debug.appendText(“\ nURLRequest data:”+ request.data);
debug.appendText(“\ n”+ loader.content);
这些行显示如下;
URLRequest网址:facebookProxy.php
URLRequest数据:路径= https%3A%2F%2Fgraph%2Efacebook%2Ecom%2F100001902730917%2Fpicture
空
所以加载器中的内容为null,我该怎么调试呢?有没有人有任何可以帮助我的解决方案?
修改
我忘了提到我遵循的教程没有解释他们提供的代码的任何基础知识,所以我完全迷失了加载器的概念。这是我遵循的教程Loading Facebook profile picture into Flash SWF using open graph api。
答案 0 :(得分:0)
该行
debug.appendText(" \n" + loader.content);
发生在Event.COMPLETE处理程序之外。
我会为open,progress和httpStatus事件添加更多侦听器。 httpStatus事件应该非常有用。
你能在facebookProxy.php中添加一些调试吗?
答案 1 :(得分:0)
我能够弄清楚这一点。变量.path和request.data以及facebookProxy.php根本没有必要。
更改
后var request:URLRequest = new URLRequest("facebookProxy.php");
到
var request:URLRequest = new URLRequest(Facebook.getImageUrl(Facebook.getSession().uid, large));
loader.load(request);
picturePlaceHolder.addChild(loader);
卸下
var variables:URLVariables = new URLVariables();
variables.path = Facebook.getImageUrl(Facebook.getSession().uid);
request.data = variables;
允许图片正确加载。很难找到所有这一切的最新教程,为什么呢?但我想我必须打开一个新问题才能找到lol。