今、私はAndroid Facebookの統合に取り組んでいます.しかし、ログアウトはこれに取り組んでいません.電話でブラウザからログアウトしないと、アプリケーションからログアウトできません.なぜこれが起こっているのですか?.どうすればこれを回避できますか?
1 に答える
ここでは、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(); } }