Случайные (и периодические) проблемы с FacebookMobile.init()
Кажется, что этот 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) или объект "сбой".
Объект fail возвращает мне это:
[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();
}
1 ответ
Похоже, ошибка в том, что Facebook возвращает токен доступа в виде массива: http://developers.facebook.com/bugs/276418065796236?browse=search_5034a345a2cb15e92344737
Я бы попытался отредактировать строку, которая возвращается, удалив в ней значение второго маркера доступа. (Все после запятой) и подписание этого к вашей локальной сессии доступа к переменной токена. Это может решить проблему