2

私は Facebook の Android API を使用していますが、1 つの例外を除いてすべてが期待どおりに機能します。Facebook アプリをデバイスにインストールしたままにし (これはスタンドアロン アプリであり、API またはアプリとは関係ありません)、Facebook オブジェクトで logout() を呼び出すと、Facebook オブジェクトが正しく無効になります。しかし、次にオブジェクトを起動すると、Facebook アプリからログイン データが取得され、ログインが持続します。

デバイスに Facebook アプリがインストールされていない場合、すべてが完全に機能します。

Facebookアプリがログインを保持しないようにするために見落としているメカニズムがあるかどうか、またはクライアントに伝えなければならないことに行き詰まっているかどうかに興味があります(これはクライアント向けのカスタムアプリであり、市場に出ることはありません)。彼らはこれを実行しているデバイスから Facebook アプリをアンインストールする必要がありますか?

4

1 に答える 1

4

Facebook Android APIとは、Facebook Android SDKのことですか?

その場合、authorizeを呼び出すときに、それがシングルサインオン(SSO)であるかOAuth2.0ダイアログ認証であるかを指定するオプションがあります。デフォルトはSSOです。SSOを使用して認証し、Facebookアプリが存在してログインしている場合、認証はFacebookサーバーの近くに行かなくても成功します。

SSOを使用せず、OAuth 2.0ダイアログ認証を使用する場合、ユーザーには最初にログインダイアログとアプリ認証ダイアログが表示され、ログイン/認証が成功すると、SDKは後続の認証のためにアクセストークンを保持します。

残念ながら、SDKのログアウトではSSOが考慮されていません。OAuth 2.0の期限切れセッションを実行し、アクセストークンをクリアしますが、ユーザーがログアウトしたことをFacebookアプリに通知しません。つまり、次の承認を行うときに(SSOであると仮定して)Facebookアプリはまだログインしているので、Facebookサーバーの近くに行かなくても承認は成功します。

前進する1つの方法は、SSOを使用せず、OAuth 2.0ダイアログ認証を要求することです(を使用authorize(FORCE_DIALOG_AUTH))。これには、Facebookアプリが存在してログインしている場合でも、ユーザーはログインする必要がありますが、ログインが持続しなくなります。

于 2011-10-06T20:34:21.343 に答える