0

今、私はAndroid Facebookの統合に取り組んでいます.しかし、ログアウトはこれに取り組んでいません.電話でブラウザからログアウトしないと、アプリケーションからログアウトできません.なぜこれが起こっているのですか?.どうすればこれを回避できますか?

4

1 に答える 1

0

ここでは、2 つの独立した処理が行われています
。1) ユーザーが Facebook に対してアプリを (権限を使用して) 認証した
かどうか、および 2) ユーザーが Facebook にログインしているかどうかです。

認証は、ユーザーがアプリを初めて使用するときに必要であり、ユーザーが明示的に認証を解除するまで続きます (たとえば、Facebook Web アカウント設定 -> アプリ -> アプリ設定を通じて)。

ユーザーがアプリを起動するたびにログインが必要になる場合があります。ただし、デフォルトの SDK の authorize() を使用すると、シングル サインオン (SSO) が試行されます。Facebook アプリがログインしている場合、アプリは自動的にログインし、既存のアクセス トークンを使用します。

SSO を使用している場合、ログアウトを行っても効果はありません。実際のログアウトでは Facebook アプリからログアウトする必要があるため、ユーザーが気に入らない可能性があります。

フォームの承認を行うことで、この動作を回避できます

authorize(this, PERMISSIONS, FORCE_DIALOG_AUTH, new LoginDialogListener());

SSO を回避し、ダイアログ ログインを強制します。もちろん、アプリを起動するたびにユーザーにログインを強制します-ログインの詳細/アクセストークンをカバーの下に保存しない限り(これはSDKが行うことです-ソースを確認してください)。

編集:

 m_facebook.authorize(FacebookActivity.this, PERMISSIONS, Facebook.FORCE_DIALOG_AUTH,
            new LoginDialogListener());

 class LoginDialogListener implements DialogListener
{
    public void onComplete(Bundle p_values)
    {
        saveCredentials(m_facebook);
        if (m_messageToPost != null)
        {
            postToWall(m_messageToPost);
        }
    }       
    public void onFacebookError(FacebookError p_error)
    {
        finish();
    }       
    public void onError(DialogError p_error)
    {
        finish();
    }       
    public void onCancel()
    {
        finish();
    }
}
于 2013-02-02T07:05:34.213 に答える