Невозможно запустить Facebook.init - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь сделать класс, который облегчает доступ к Adobe Facebook Graph Api без всякой мелочи, которая мне нужна. Вот как я это делаю: у меня есть один FbNewLib.as и Test.as кака также основной test.fla.

В FbNewLib.as у меня есть строка инициализации для инициализации API Facebook.

package
{
import com.facebook.graph.Facebook;
import com.facebook.graph.data.FacebookSession;

import flash.external.ExternalInterface;

public class FbNewLib 
{
    protected static const app_id:String = "155006914551234" //replace with App Id;
    public var scope:String;
    public var userId:String;
    public var testString:String;

    var session:FacebookSession;

    public function FbNewLib() 
    {
        trace("FbNewLib initiated.")
    }

    public function initFacebookLib(scopeString:String):void
    {
        scope = scopeString;
        testString = "testString";

        Facebook.init(app_id, onInit);
    }

    protected function onInit(result:Object, fail:Object):void 
    {
        trace("onInit");
        testString = "testStringONINIT";

        if (result) 
        { //already logged in because of existing session
            trace ("On init, already logged in.");

            testString = "testStringSUCCESSFUL";

            session = Facebook.getSession();
            userId = session.uid;
        } 
        else 
        {
            trace("On init, not logged in.");

            testString = "testStringUNSUCCESSFUL";
        }
    }

В моем Test.as:

    public function Test()
    {
        trace("connected to test.fla");

        init_btn.addEventListener(MouseEvent.CLICK, initFbLib);
    }

    private function initFbLib(e:MouseEvent):void
    {
        gotoAndStop(2);

        var fb:FbNewLib = new FbNewLib();
        fb.initFacebookLib("read_stream");

        textBox_txt.text = fb.scope + " " + fb.userId + " " + fb.testString;
    }

Однако, когда я тестирую его в своем testApp в моем testApp в Facebook, Facebook.init () не работает.Что в textbox_txt просто "read_stream, null, testString"

Кто-нибудь может помочь?Это вообще возможно?Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 сентября 2012

Вы должны установить URL своего домена и холста прямо в настройках своего приложения.В противном случае вы не увидите никаких ошибок при запуске facebook.init () и не попадете в эту функцию.

0 голосов
/ 25 августа 2011

это способ подключения к Facebook с помощью Graph API. Все объясняется в комментариях. Это на самом деле подключение к Facebook, никаких постов на стенах или что-то еще. Эта часть может быть найдена ниже этого класса.

package com.DAL 
{
    import com.facebook.graph.Facebook;
    import flash.events.Event;
    import com.facebook.graph.data.FacebookSession;
    import flash.events.EventDispatcher;
    import flash.events.MouseEvent;
    import com.fbLoginButton;
    import com.adobe.serialization.json.JSON;

    public class FBConnect extends EventDispatcher
    {
        /******************************************
        *   Variables
        ******************************************/
        private var _applicationID:String;
        private var _extendedPermissions:Object;

        /******************************************
        *   Constants
        ******************************************/
        public static const CONNECTED:String = "CONNECTED";

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

        /******************************************
        *   Constructor
        ******************************************/
        public function FBConnect() 
        {
            super();

            //Set applicationid
            _applicationID = "YOUR_ID";

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

            //Initialize facebook
            Facebook.init(_applicationID);
        }

        /******************************************
        *   Methods
        ******************************************/     
        public function login(e:MouseEvent):void
        {           
            Facebook.login(handleLogin, _extendedPermissions);
        }

        private function handleLogin(response:Object, fail:Object):void
        {
            dispatchEvent(new Event(CONNECTED));
        }
    }
}

Это должно позаботиться о подключении к Facebook. Если вы хотите разместить на стене или что-то еще, вы можете найти небольшой пример ниже.

        /******************************************
        *   Constructor
        ******************************************/
        public function FBLogic() 
        {
            super();

            _connect = new FBConnect();
            _connect.addEventListener(FBConnect.CONNECTED, startLoaders);

            initLoaders();
        }

        /******************************************
        *   Methods
        ******************************************/

        ...

        public function post(message:String):void
        {
            var _params:Object = new Object();

            _params.access_token = Facebook.getSession().accessToken;
            _params.message = message;

            Facebook.api("/" + _userID + "/feed", messagePosted, _params, "POST");
        }

        public function messagePosted(response:Object, fail:Object):void
        {
            dispatchEvent(new Event(MESSAGEPOSTED));
        }

        public function login(e:MouseEvent):void
        {
            var _loginButton:fbLoginButton = e.target as fbLoginButton;
            _loginButton.alpha = 0;
            _loginButton.visible = false;

            _connect.login(e);
        }

Если это не помогает, возможно, вы забыли добавить код в свой HTML-файл. Не забудьте добавить следующий код в заголовок вашего HTML-файла:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script> 

И вам также нужен div с именем fb-root, объявленный так.

<body>
    <div id="fb-root"></div>
    <div id="flashContent">
    </div>
</body>
...