簡體   English   中英

最簡單的Facebook-Flash實現無法正常工作

[英]Simplest Facebook - Flash implementation won't work

編輯:我正在嘗試本地執行以下操作

我正在嘗試為Flash應用程序做一個非常簡單的Facebook實現。 我正在使用“ GraphAPI_Web_1_8_1.swc”。 這是時間軸的主要代碼:

import FBLog;
import fanlib.utils.Debug;

addChild(Debug.field); // simply adds a textfield on stage for debugging
FBLog.INSTANCE;

和FBLog類代碼:

package {

    import flash.events.Event;
    import flash.events.EventDispatcher;
    import flash.events.MouseEvent;
    import fanlib.utils.Utils;
    import fanlib.utils.Debug;
    import com.facebook.graph.Facebook;

    public class FBLog extends EventDispatcher
    {
        static public const CONNECTED:String = "CONNECTED";
        static public const INSTANCE:FBLog = new FBLog();

        private var _applicationID:String;
        private var _extendedPermissions:Object;

        public function get applicationID():String { return _applicationID; }

        public function FBLog() 
        {
            super();
            if (INSTANCE) throw "What?";

            new DelayedCall(init, 0.5);
        }
        private function init():void {
            _applicationID = "408526019168127";

            //Set permissions to ask for
            _extendedPermissions = {scope:"read_stream, publish_stream, user_about_me, read_friendlists, user_photos"};

            //Initialize facebook
            try {
                Debug.field.appendText("Issuing Facebook init...");
                Facebook.init(_applicationID, handleInit);
                Debug.field.appendText("Issued Facebook init...");
            } catch (e:Error) { Debug.field.appendText("Facebook not initialized!" + "\n" + e); }
        }
        private function handleInit(response:Object, fail:Object):void {
            Debug.field.appendText("end init!");
            if (!response) response = {};
            if (!fail) fail = {};
            trace(Utils.PrettyString(response), Utils.PrettyString(fail));
            dispatchEvent(new Event(CONNECTED));
        }

        public function login(e:MouseEvent = null):void {
            Debug.field.appendText("start login");
            Facebook.login(handleLogin, _extendedPermissions);
        }
        private function handleLogin(response:Object, fail:Object):void {
            Debug.field.appendText("end login");
            if (!response) response = {};
            if (!fail) fail = {};
            Debug.field.appendText(Utils.PrettyString(response) + "\n" + Utils.PrettyString(fail));
            dispatchEvent(new Event(CONNECTED));
        }
    }
}

由於超出我的原因,因此從未調用過'handleInit'函數。 這是我在文本字段中獲得的輸出:

發行Facebook init ...發行Facebook init ...

我從來沒有得到額外的“結束初始化!”。

現在,我試圖將此SWF嵌入到看起來像這樣的HTML中,但絕對沒有

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>Digital TradeShow</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <style type="text/css" media="screen">
            #myContent              { width:1300 height:700; }
            body                    { margin:0; padding:0; overflow:auto; text-align:center; background:white;}
            #myAlternativeContent   { /* style alt content */ }
        </style>
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript">
            var flashvars = {};
            var params = { allowfullscreen:"true", wmode:"window" };
            var attributes = {};
            swfobject.embedSWF("FBLog.swf", "myContent", "1300", "700", "10.2", "expressInstall.swf", flashvars, params, attributes);
        </script>
        <script type="text/javascript">
            function PopupCenter(pageURL,title,w,h,scroll) {
                var left = (screen.width/2)-(w/2);
                var top = (screen.height/2)-(h/2);
                var targetWin = window.open(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars='+scroll+', resizable=no, copyhistory=no, width='+w+', height='+h+', top='+top+', left='+left);
                } 
        </script> 
        <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
    </head>
    <body>
        <div id="fb-root"></div>
        <div id="myContent">
            <div id="myAlternativeContent">
                <h1>Alternative content</h1>
                <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>
            </div>
        </div>
    </body>
</html>

輸出相同。 我可能做錯了什么? 我使用的APP_ID是正確的。

這是一個非常煩人的問題,幾乎是“隱藏”在網絡中的(至少對我而言,很難找到答案)。

在您的HTML中使用以下嵌入部分:

var attributes = {
    name:"myContent",
    id:"myContent"
};

當在屬性對象中使用“名稱”屬性時,FB JS可以在DOM樹中找到影片並執行回調函數。 希望這對您有所幫助。

現在,我仍然有一個問題:這可以解決Chrome,Firefox等的問題。但是IE9不能。 可能是因為JSON解析器出現問題。 如果我找到答案,我會返回並在此處發布鏈接。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM