actionscript-3 - FacebookMobile.init() 偶尔(且反复出现)的问题

标签 actionscript-3 facebook-graph-api air facebook-as3-api

似乎此 API 已损坏和/或废弃,因为在某些日子里,此 API 调用总是在几个小时内失败。今天又发生了,但比以前花费的时间更长。

我不知道该怎么办。我有 2 个 Air 应用程序,但它们今天无法运行。 有什么解决办法吗?

这是一段简单的代码:

FacebookMobile.init(APP_ID, onInit);

private function onInit(fbSession:Object, fail:Object):void 
{
    if (fbSession){
        trace(fbSession.accessToken);
    }
    else{
        traceV2(fail); // it's a "deep" trace
        // other API methods related to login
    }
}

在 FacebookMobile.init() 中,我们必须期待一个 session 对象(包含 FB 访问 token )或一个“失败”对象。
失败对象将其返回给我:

[Object]
|   [error:Object]
    | code = 190 
    | message = Malformed access token AAAEWSUA8XjUBAJo4JuO5hUMwSnKC95LNRr1nHHIU8rwPGzxvHIuhUcDziZA9ZC3xDf4ZBwYcqjVU1ir5wf5jlEsJ5zwyMhnnWGyWxXeKQZDZD,AAAEWSUA8XjUBAJo4JuO5hUMwSnKC95LNRr1nHHIU8rwPGzxvHIuhUcDziZA9ZC3xDf4ZBwYcqjVU1ir5wf5jlEsJ5zwyMhnnWGyWxXeKQZDZD 
    | type = OAuthException

提前致谢!


问题已解决。 此特定问题的解决方案位于 com.facebook.graph.FacebookMobile:560,位于 handleLogin() 函数内。

    protected function handleLogin(result:Object, fail:Object):void {
        loginWindow.loginCallback = null;

        if (fail) {
            loginCallback(null, fail);
            return;
        }

        // ---------------||--------------------//
        // ---------------\/--------------------//
        // This line below solves this problem
        result.access_token = String(result.access_token).split(',')[0];
        // ---------------/\-------------------//
        // ---------------||-------------------//


        session = new FacebookSession();
        session.accessToken = result.access_token;
        session.expireDate = (result.expires_in == 0) ? null : FacebookDataUtils.stringToDate(result.expires_in) ;

        if (_manageSession) {
            var so:SharedObject = SharedObject.getLocal(SO_NAME);
            so.data.accessToken = session.accessToken;
            so.data.expireDate = session.expireDate;
            so.flush();
        }

        verifyAccessToken();
    }

最佳答案

Facebook 将访问 token 作为数组返回,这似乎是一个错误: http://developers.facebook.com/bugs/276418065796236?browse=search_5034a345a2cb15e92344737

我会尝试通过删除其中的第二个访问 token 值来编辑返回的字符串。 (逗号后面的所有内容)并将其签名到本地 session 访问 token 变量。它可能会解决问题

关于actionscript-3 - FacebookMobile.init() 偶尔(且反复出现)的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12077423/

相关文章:

用于 Android 开发的 Flash 与 Flex

android - 如何在安卓模拟器中安装adobe air

flash - 旋转 Sprite 将 Sprite 从其原始位置移动

actionscript-3 - as3 支持循环标签吗?

actionscript-3 - 在 actionscript 3 中搜索很长的单词列表以查找匹配项的最快方法是什么?

javascript - 重新加载 Facebook 评论会导致跨源错误

facebook - 使用某些 facebook 页面 id/用户名访问图形 api 时出现问题

actionscript-3 - 如何从库中动态添加对象?

iphone - Facebook SDK iOS 中的用户未登录错误

actionscript-3 - Flex3 中的 TLS 支持