Flex:适用于flex项目的facebook apis

时间:2011-08-17 04:05:25

标签: flex actionscript-3 facebook

我是flex和as3的新手。我需要整合facebook for flex移动项目。我整合了facebook api for android。我正在互联网上搜索有关在flex中集成facebook的好教程。请建议我很好的教程

2 个答案:

答案 0 :(得分:0)

有一个全动作方法来使用涉及facebook flash graph api的facebook apis,但它有点儿麻烦。只要您在浏览器中,它就可以用于大多数事情。

图表api用于提示用户登录其帐户并授予应用程序执行权限的权限,然后对该用户帐户执行所需的操作。您可以使用Facebook.init方法开始整个过程​​:

Facebook.init(APP_ID, onInit);

APP_ID是您在Facebook上创建应用程序时获得的应用程序ID,而onInit是您创建的回调函数,它应如下所示:

function onInit(result:Object, fail:Object):void{
    var opts:Object = {perms:"publish_stream"};
    if (result)  //already logged in because of existing session
        doStuff(); //in this case, publish on user's wall
    else
        Facebook.login(onLogin, opts);
}

这两个参数必须存在。如果定义了请求,则表示用户已登录。如果未定义,则提示用户登录,并向应用程序授予权限。在开发者facebook网站上查找有关权限的更多信息。

Facebook.login的第一个参数是回调函数,第二个参数是您希望用户同意的权限。 onLogin()如下:

function onLogin(result:Object, fail:Object):void {
            if (result) //successfully logged in
                doStuff();
            else        
                     oh_well(); // they don't want to use it.
}

这可能会提示用户登录,但是,它会立即返回结果中的空值。这与facebook登录功能编写得很糟糕,如果你在网站上设置flash并使用javascript控制台进行调试,你可以看到它显然是在计时器上运行,看看你是否已经退出,它永远不会完成。但如果这不是什么大问题......

...现在,对于doStuff。在我的情况下,我想将消息,swf和缩略图发布到用户的墙上。我用以下代码完成了这个:

function doStuff(){
    var obj:Object={
    "message": "This is a test message",
    "picture": "thumbnail.jpg",
    "source": "flash file"
     }

    Facebook.api("/me/feed", onCallApi, JSON.decode(obj), "POST"); 

}

Facebook.api()真的很重要。 onCallApi是回调函数,JSON.decode(obj)是上面的json对象,带有相应的补充。 “me / feed”是Facebook如何连接订阅源,用户,朋友等。Learn more about that stuff here. facebook文档有一个更好的方法来放置flash文件,使用相同的函数但在编码的json中使用不同的参数,但是我无法让它工作(我认为这是因为嵌套的jsons)。正如您所看到的,您将需要as3corelib的JSON解码器。

onCallAPI:

function onCallApi(result:Object, fail:Object):void {
    if (result) {
        //successful post
    } else {
           //unsuccessful post
    }
}

这应该适用于大多数应用。

facebook flash api只是与javascript api接口,所以你需要在嵌入flash的html页面上从facebook导入相应的javascript函数。

如果你愿意,你可以很容易地修复facebook.login。您可以继续调用Facebook.init()直到经过一段时间,或者在javascript中生成登录窗口,在窗口关闭时监听,然后使用ExternalInterfaces与Flash回调接口以识别结果

答案 1 :(得分:0)

在我尝试使用fcebook API for flash时,我遇到了不间断的问题。

Facebook被开发者投票认为拥有世界上最差的API,因为不断变化和错误的无法编写的代码。闪存库将与已经糟糕,破碎的开发人员体验不同步......尽管他们可能曾经一度工作过。 Facebook因违反规定而臭名昭着。

迄今为止,我最大的成功来自与他们的PHP API的集成,以使用JSON获取我需要的数据。 Facebook似乎更认真地对待他们(他们不负责闪存)PHP API,并且更希望能够更新和工作。