Выход из As3 Graph API

я разрабатываю приложение, которое будет воспроизводиться разными пользователями, но я использую API графа as3 для аутентификации пользователей и публикации на их стене, и мне нужно выйти из каждого пользователя, прежде чем следующий пользователь начнет свой сеанс на графе as3 API: http://code.google.com/p/facebook-actionscript-api/

Я пытаюсь заставить FB запрашивать информацию для входа, но после выхода из системы при повторном входе в систему API пропускает шаг и регистрируется в последнем сеансе пользователя.


person Rodrigo Da Rosa Elesbao    schedule 28.01.2011    source источник


Ответы (3)


Это проблема, которая постоянно пересматривается FacebookMobile, Facebook и FacebookDesktop. По сути, вам нужно убедиться, что вы установили FacebookDesktop.manageSession = false; и передайте 2-й аргумент «выйти» URL-адрес API вашего сайта. Если это не сработает, используйте другой метод "reallyLogout", как описано здесь, в этой ветке.

Примечания в комментарии № 24 подробно описывают способ предоставления токена доступа от FacebooMobile (или любого другого синглтона, который вы используете), а затем вручную вызывая метод logout.php на Facebook с токеном доступа.

http://code.google.com/p/facebook-actionscript-api/issues/detail?id=297#c24

person Dominic Tancredi    schedule 20.11.2011

Ни одно из решений, которые я видел в Интернете, не работало для меня. Проблема действительно заключается в том, что cookie-файл Facebook StageWebView не очищается при выходе из системы с помощью вызова FacebookMobile.logout(). Загрузка logout.php с токеном доступа мне не помогла, вероятно, потому, что нет значения параметра «следующее» для воздушных приложений, что имеет смысл. Я видел, как люди предлагали использовать localhost или facebook.com, но ни один из этих вариантов не работал.

Я придумал действительно сомнительное решение, но пока оно работает. Смысл в том, чтобы выйти из системы пользователя в facebook, как если бы он вышел из системы самостоятельно. Для этого нам нужно загрузить facebook.com в StageWebView и нажать «Выйти». Кнопка выхода — это элемент формы отправки для html-формы «logout_form». Итак, нам нужно сделать вызов javaScript

document.getElementById('logout_form').submit();

в нашем StageWebView. И мы можем сделать это, позвонив

webView.loadURL("javascript:document.getElementById('logout_form').submit();");

в ActionScript.

Полный код, который я использую сейчас

protected var _logoutAttemptInProgress:Boolean = false;
public function fbLogout():void{
if(!_isLoggedIn) return;
if(_logoutAttemptInProgress) return;
_logoutAttemptInProgress = true;

var webView:StageWebView = new StageWebView();
webView.viewPort = new Rectangle(-1, 0, 1, 1);          
webView.stage = this.stage;         
webView.loadURL("http://www.facebook.com/lksmlrsgnlskn");
webView.addEventListener(Event.COMPLETE, runLogoutJs);

function runLogoutJs(event:Event):void{
    webView.removeEventListener(Event.COMPLETE, runLogoutJs);
    var jsString:String = "document.getElementById('logout_form').submit();";
    webView.loadURL("javascript:"+jsString);
    webView.addEventListener(Event.COMPLETE, closeWebView);
}

function closeWebView(event:Event):void{
    webView.removeEventListener(Event.COMPLETE, closeWebView);
    webView.stage = null;
    webView.dispose();

    _isLoggedIn = false;
    _logoutAttemptInProgress = false;
}

FacebookDesktop.logout(null, APP_ORIGIN);
}

«lksmlrsgnlskn» — это просто какой-то случайный мусор для перехода к странице с ошибкой, которая намного меньше главной страницы и загружается быстрее.

FacebookDesktop.logout предназначен для очистки любых локальных данных SharedObject, которые все еще могут быть в библиотеке Facebook.

person borisgolovnev    schedule 26.05.2012

Это проблема с файлами cookie, я имею в виду, что сеанс первого пользователя остается, и когда вы нажимаете для входа в систему, API регистрирует первого пользователя.

Я не знаю, почему, но метод выхода из Facebook Api не выводит пользователя из Facebook, а только выводит пользователя из вашего приложения.

Если вы пришли к решению или думаете что-то еще, дайте мне знать, чтобы мы могли получить решение.

person melli-182    schedule 14.11.2011