【问题标题】:I am trying to load a facebook profile picture with Loader()我正在尝试使用 Loader() 加载 Facebook 个人资料图片
【发布时间】:2011-07-08 03:20:29
【问题描述】:

我在将用户 facebook 个人资料图片的 url 传递给 Loader() 变量时遇到问题。我正在使用 PHP 文件来解决安全问题,并且从我所做的调试中,它表明我的 URL 正常,但加载程序运行错误事件侦听器。这是我的 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 数据:path=https%3A%2F%2Fgraph%2Efacebook%2Ecom%2F100001902730917%2Fpicture

所以加载器中的内容为空,我该如何调试呢?有没有人有任何可以帮助我的解决方案?

编辑

我忘了提到我遵循的教程没有解释有关他们提供的代码的任何基础知识,所以我完全迷失了加载程序的概念。这是我遵循的教程Loading Facebook profile picture into Flash SWF using open graph api

【问题讨论】:

    标签: actionscript-3 facebook facebook-graph-api


    【解决方案1】:

    线

    debug.appendText(" \n" + loader.content);
    

    发生在 Event.COMPLETE 处理程序之外。

    我会为 open、progress 和 httpStatus 事件添加更多侦听器。 httpStatus 事件应该很有帮助。

    你能在你的 facebookProxy.php 中添加一些调试吗?

    【讨论】:

    • 如何调试 facebookProxy.php?我编辑了我的问题以显示指向我遵循的教程的链接。如果我不理解您建议的某些内容,请与我联系。在哪里可以查看 open、progress 和 httpStatus 事件的目的和用途?
    【解决方案2】:

    我能够弄清楚这一点。 variables.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;
    

    允许图片正确加载。很难找到所有这些的最新教程,这是为什么呢?但我想我必须提出一个新问题才能找出答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多