如何在实例化FacebookSessionUtil后解决空对象引用

时间:2010-02-11 11:38:06

标签: flex facebook facebook-actionscript-api

我认为你可以帮助我解决这个小问题。

我是Facebook开发人员的新手,选择ActionScript 3作为我的开发者平台。我使用Adobe推广的official facebook-actionscript-api的SWC库。

所以我按照他们的教程。所以我做了以下指示:

  1. 创建Flex项目。
  2. 在Flex项目中下载并Facebook_library_v3.4_flex.swc\lib
  3. 提供以下代码:

            import com.facebook.Facebook;
            import com.facebook.utils.FacebookSessionUtil;
    
            private var fbook:Facebook;
            private var session: FacebookSessionUtil;
    
            protected var api_key : String = "my-facebook-app-api-key";
            protected var secret_key : String = "my-facebook-app-secret-key";
    
            public function init() : void {
                //fbook = new Facebook();
                session=new FacebookSessionUtil(api_key,secret_key,this.loaderInfo);
                var fbook : Facebook = session.facebook;
                session.validateLogin();
            }
    

    尝试运行调试会话后。执行此语句后我收到错误:

    session = new FacebookSessionUtil(api_key,secret_key,this.loaderInfo);

  4. 我认为我做错了但我无法理解。你可以通过提出建议或任何指导来帮助我吗?

    这是我的例外:

    TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at com.facebook.utils::FacebookSessionUtil()[C:\Users\MikeHunt\Work\FacebookAPI\src\com\facebook\utils\FacebookSessionUtil.as:128]
    at CheeseZaa/init()[/Users/teerasej/Documents/Flex Builder 3?/freelance/CheeseZaa/src/CheeseZaa.mxml:24]
    at CheeseZaa/___CheeseZaa_Application1_creationComplete()[/Users/teerasej/Documents/Flex Builder 3?/freelance/CheeseZaa/src/CheeseZaa.mxml:4]
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9440]
    at mx.core::UIComponent/set initialized()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1168]
    at mx.managers::LayoutManager/doPhasedInstantiation()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:718]
    at Function/http://adobe.com/AS3/2006/builtin::apply()
    at mx.core::UIComponent/callLaterDispatcher2()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8744]
    at mx.core::UIComponent/callLaterDispatcher()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:8684]
    

    我注意到第一行异常显示了这一点:

    com.facebook.utils::FacebookSessionUtil()[C:\Users\MikeHunt\Work\FacebookAPI\src\com\facebook\utils\FacebookSessionUtil.as:128]
    

    但我不确定它是否涉及例外。

    我的开发平台是:

    • Macbook Pro
    • OSX Snow Leopard 10.6
    • Flash Player 10.0.32调试程序
    • Mozilla Firefox 3.6
    • Flex builder 3.2
    • Flex SDK 3.5
    • Facebook_library_v3.4_flex.swc

    每个建议和指南都会感谢你。我认为这对于可能遇到像我这样的问题的其他开发人员来说会有好处。

1 个答案:

答案 0 :(得分:2)

loaderInfo尚未就绪,目前为空。

尝试: -

public function init():void
{
    addEventListener(Event.ADDED_TO_STAGE, onAddedToStage, false, 0, true);
}

private function onAddedToStage(event:Event):void
{
    removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

    session = new FacebookSessionUtil(api_key, secret_key, this.loaderInfo);
    var fbook:Facebook = session.facebook;

    session.validateLogin();
}