似乎此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()中,我们需要一个会话对象(包含FB访问令牌)或“失败”对象。
失败对象将此返回给我:
[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();
}
答案 0 :(得分:2)
似乎它是Facebook将Access令牌作为数组返回的错误: http://developers.facebook.com/bugs/276418065796236?browse=search_5034a345a2cb15e92344737
我会尝试通过删除其中的第二个访问令牌值来编辑返回的String。 (逗号后面的所有内容)并将其签名到本地会话访问令牌变量。它可能会解决问题