Facebook abobe as3 api,用于移动空气



我正在计划一个涉及使用Facebook登录的跨平台(Android和IOS)移动应用程序的项目。我没有脸书API的经验,也找不到任何适合新手的完整材料。我想将空气用于其跨平台功能,因此希望避免每个平台的多个解决方案。我已经搜索了很多帮助,但没有找到太多。你们中的任何一个人都可以指出你发现从这种事情开始完全使用的资源。

AS3 Facebook API 就是您所需要的。( http://code.google.com/p/facebook-actionscript-api/)也许您将不得不更改一些内容(例如其中的JSON方法),但除此之外,它似乎可以正常工作。您也可以从那里下载几个示例,您可以看到不同类型环境的使用情况。

另外,请阅读Tom Krcha的这篇文章 http://www.adobe.com/devnet/games/articles/getting-started-with-facebooksdk-actionscript3.html

如果您有更具体的问题,请询问。这个太通用了。

编辑:这是我前段时间为一个小项目写的课

package com.company.social {
    import com.facebook.graph.FacebookMobile;
    import com.company.AppConst;
    import com.company.IDestroyable;
    import com.company.Main;
    import com.company.displayassets.WebViewCloseStripe;
    import com.company.events.FacebookControllerEvent;
    import com.company.events.TwitterControllerEvent;
    import flash.display.BitmapData;
    import flash.display.PNGEncoderOptions;
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.events.EventDispatcher;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle;
    import flash.media.StageWebView;
    import flash.utils.ByteArray;
    import flash.utils.clearTimeout;
    import flash.utils.setTimeout;
    public class FacebookController extends EventDispatcher implements IDestroyable {
        private static const APP_ID:String = "1234512345"; // Your App ID.
        private static const SITE_URL:String = "some_url";
        //Extended permission to access other parts of the user's profile that may be private, or if your application needs to publish content to Facebook on a user's behalf.
        private var _extendedPermissions:Array = ["publish_stream","user_website","user_status","user_about_me"];
        private var _stage:Stage;
        private var _webView:StageWebView;
        private var _topStripe:WebViewCloseStripe;
        private var _activity:String;
        private var _timeoutID:uint;
        public static const ACTIVITY_LOGIN:String = "login";
        public static const ACTIVITY_POST:String = "post";
        public function FacebookController(stage:Stage) {
            _stage = stage;
            init();
        }
        private function init():void {
            _activity = ACTIVITY_LOGIN;
            startTimeout();
            FacebookMobile.init(APP_ID, onHandleInit, null);
        }
        private function onHandleInit(response:Object, fail:Object):void {
            if (response) {
                stopTimeout();
                dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.LOGIN_COMPLETE));
                //FacebookMobile.api("/me", handleUserInfo);
            }
            else {
                /*trace("no response, login -->");
                for(var prop in fail["error"]) {
                    trace(prop+": "+fail["error"][prop]);
                }*/
                loginUser();
            }
        }
        private function startTimeout():void {
            trace("timeout start");
            clearTimeout(_timeoutID);
            _timeoutID = setTimeout(timeout, AppConst.TIMEOUT_TIME);
        }
        private function timeout():void {
            trace("timed out");
            clearTimeout(_timeoutID);
            dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.TIMEOUT));
        }
        private function stopTimeout():void {
            trace("timeout stop");
            clearTimeout(_timeoutID);
        }
        private function loginUser():void {
            stopTimeout();
            _topStripe = new WebViewCloseStripe();
            _topStripe.getCloseButton().addEventListener(MouseEvent.CLICK, closeClickHandler);
            _stage.addChild(_topStripe);
            _webView = new StageWebView();
            _webView.viewPort = new Rectangle(0, _topStripe.height, _stage.fullScreenWidth, _stage.fullScreenHeight - _topStripe.height);
            FacebookMobile.login(handleLogin, _stage, _extendedPermissions, _webView);
        }
        private function handleLogin(response:Object, fail:Object):void {
            if(_topStripe) {
                _topStripe.getCloseButton().removeEventListener(MouseEvent.CLICK, closeClickHandler);
                _topStripe.destroy();
                _stage.removeChild(_topStripe);
                _topStripe = null;
            }
            if(_webView) {
                _webView = null;
            }
            if(response) {
                dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.LOGIN_COMPLETE));
                //FacebookMobile.api('/me', handleUserInfo);
            }
            else {
                dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.LOGIN_ERROR));
            }
        }
        private function closeClickHandler(e:MouseEvent):void {
            dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.CLOSE));
        }
        private function handleUserInfo(response:Object, fail:Object):void {
            if (response) {
                for(var prop in response) {
                    trace(prop+": "+response[prop]);
                }
            }
        }
        private function handleUploadImage(result:Object, fail:Object):void {
            stopTimeout();
            if(result) {
                dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.POST_COMPLETE));
            }
            else {
                dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.POST_ERROR));
            }
        }
        public function postWithImage(message:String, imageData:BitmapData):void {
            _activity = ACTIVITY_POST;
            var byteArray:ByteArray = imageData.encode(new Rectangle(0, 0, imageData.width, imageData.height), new PNGEncoderOptions()); 
            var params: Object = new Object;
            params.image = byteArray;
            params.fileName = "image.png";
            params.message = message;
            startTimeout();
            FacebookMobile.api("/me/photos", handleUploadImage, params, "POST");
        }
        public function reset():void {
            FacebookMobile.logout(handleReset, SITE_URL);
        }
        public function handleReset(response:Object):void {
            dispatchEvent(new FacebookControllerEvent(FacebookControllerEvent.RESET));
        }
        public function destroy():void {
            if(_webView) {
                _webView.dispose();
                _webView = null;
            }
            if(_topStripe) {
                _topStripe.getCloseButton().removeEventListener(MouseEvent.CLICK, closeClickHandler);
                _topStripe.destroy();
                _stage.removeChild(_topStripe);
                _topStripe = null;
            }
            _stage = null;
        }
    }
}
或者,

您可以使用如下所示的本机扩展:

http://www.milkmangames.com/blog/tools/#iosgv

也有来自其他出版商的免费版本。

最新更新