2011-01-28 3 views
2

私は別のユーザーが再生するアプリケーションを開発していますが、ユーザーを認証し壁に投稿するためにas3グラフAPIを使用しています。ユーザーは、AS3のグラフAPIの彼のセッションを開始します。 http://code.google.com/p/facebook-actionscript-api/As3グラフAPIログアウト

私はログインが再び、APIはステップをスキップして、最後のユーザーセッションで、ログイン時にログインの情報のためではなく、ログアウト後に依頼するFBを強制的に検索します。

答えて

1

これはFacebookMobile、Facebook、およびFacebookDesktopによって継続的に改訂されている問題です。基本的には、FacebookDesktop.manageSession = falseを設定する必要があります。あなたのサイトのapi URL "logout"の第2引数を渡します。 If that doesn't work, the other method is to use "reallyLogout", as detailed here in this thread

コメント#24の注釈は、FacebooMobile(または使用しているシングルトン)からアクセストークンを公開し、アクセストークンを使って手動でFacebook上でlogout.phpメソッドを呼び出す方法を詳しく説明しています。

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

0

これはクッキーの問題です。つまり、firtsのユーザーセッションが残っていて、最初のユーザーのAPIログにログインするときに押すと問題になります。

Facebook Apiのログアウト方法ではユーザーがフェイスブックからログアウトしてしまう理由はわかりませんが、アプリケーションからユーザーをログアウトするだけです。

解決策を見つけたり、何かを考えている場合は、解決策を得るためにお知らせください。

2

私は私のために動作しなかった、ウェブ上で見ているソリューションのなし。 FacebookMobile.logout()コールでログアウトしてもStageWebViewのfacebook cookieがクリアされないという問題があります。アクセストークンを使用してlogout.phpを読み込んでも、おそらく役に立たなかったのは、エアアプリケーションの「次の」パラメータ値が意味をなさないためです。私は人々がlocalhostまたはfacebook.comを使用するように提案しているのを見ましたが、これらのオプションのどれも働かなかった。

私は本当に疑わしい解決策を考え出しましたが、今のところうまくいきます。 ポイントは、彼自身のログアウトのように、通常はfacebookでユーザーをログアウトすることです。これを行うには、StageWebViewでfacebook.comを読み込み、ログアウトをクリックする必要があります。 「ログアウト」ボタンは、「logout_form」HTMLフォームの送信フォーム項目です。したがって、私たちはStageWebViewでJavaScript呼び出しを行う必要があります。

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

ActionScriptでこれを行うには、

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は、Facebookのlibにまだ残っている可能性のあるローカルSharedObjectデータをすべて消去することです。

+0

このトリックは機能します。期間。共有してくれてありがとう。 – benya