2011-01-28 4 views
2

Je suis en train de développer une application qui sera jouée par des utilisateurs différents, mais j'utilise l'API as3 pour authentifier les utilisateurs et poster sur leur mur, et j'ai besoin de me déconnecter avant chaque utilisateur démarre sa session graphique AS3 api: http://code.google.com/p/facebook-actionscript-api/As3 Graph API Logout

Je recherche pour forcer le FB à demander l'information de connexion, mais après une déconnexion lors de la connexion à nouveau, API sauter l'étape et le journal, à la dernière session de l'utilisateur.

Répondre

1

Ce numéro a été continuellement révisé par FacebookMobile, Facebook et FacebookDesktop. Fondamentalement, vous devrez vous assurer que vous définissez FacebookDesktop.manageSession = false; et passez le 2ème argument de "logout" l'URL de votre site. If that doesn't work, the other method is to use "reallyLogout", as detailed here in this thread. Les remarques dans le commentaire n ° 24 détaillent la façon d'exposer le jeton d'accès de FacebooMobile (ou le singleton que vous utilisez), puis d'appeler manuellement la méthode logout.php sur Facebook, avec le jeton d'accès.

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

0

Ceci est un problème avec les cookies, je veux dire, la première session de l'utilisateur reste et lorsque vous appuyez sur pour vous connecter les journaux API dans le premier utilisateur.

Je ne sais pas pourquoi, mais la méthode de déconnexion Facebook Api ne pas déconnecter l'utilisateur de facebook, seulement déconnecter l'utilisateur de votre application.

Si vous êtes arrivé à une solution ou pensez autre chose, faites le moi savoir afin que nous puissions obtenir la solution.

2

Aucune des solutions que je l'ai vu sur le web a travaillé pour moi. Le problème est en effet avec cookie facebook StageWebView n'étant pas autorisé à la déconnexion avec FacebookMobile.logout() appel. Le chargement de logout.php avec le jeton d'accès ne m'a pas aidé probablement parce qu'il n'y a pas de valeur de paramètre "next" pour les applications aériennes qui a du sens. J'ai vu des gens suggérer d'utiliser localhost ou facebook.com mais aucune de ces options n'a fonctionné.

J'ai trouvé une solution vraiment discutable, mais cela fonctionne pour l'instant. Le but est de se déconnecter de l'utilisateur sur Facebook normalement, comme s'il se déconnectait lui-même. Pour ce faire, nous devons charger facebook.com dans StageWebView et cliquer sur la déconnexion. Le bouton Déconnexion est un élément de formulaire de soumission pour le formulaire html "logout_form". Nous avons donc besoin de faire un appel javaScript

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

dans notre StageWebView. Et nous pouvons faire exactement cela en appelant

en ActionScript.

Le code complet que je l'utilise pour l'instant

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 » est juste des ordures au hasard pour se rendre à la page d'erreur qui est beaucoup plus petite que la page principale et des charges plus rapides.

FacebookDesktop.logout permet de supprimer les données SharedObject locales que la bibliothèque Facebook peut encore posséder.

+0

Cette astuce fonctionne. Période. Merci d'avoir partagé. – benya