[解決済み] Facebook SDK 3.0から、Facebookのログイン/ログアウトボタンを使わずに、プログラムでログアウトするには?
2023-06-30 11:20:05
質問
タイトルにある通りです。私は、ユーザーの Facebook 情報を取得するためにカスタム ボタンを使用しています ("サインアップ" 目的のため)。しかし、アプリが最後に登録したユーザーや、Facebook ネイティブ アプリを使用して現在ログインしているユーザーを記憶しないようにしたいのです。Facebookのログインアクティビティが毎回ポップアップするようにしたいのです。それが、以前のユーザーをプログラム的にログアウトさせたい理由です。
どうすればよいのでしょうか?これは、私がログインを行う方法です。
private void signInWithFacebook() {
SessionTracker sessionTracker = new SessionTracker(getBaseContext(), new StatusCallback()
{
@Override
public void call(Session session, SessionState state, Exception exception) {
}
}, null, false);
String applicationId = Utility.getMetadataApplicationId(getBaseContext());
mCurrentSession = sessionTracker.getSession();
if (mCurrentSession == null || mCurrentSession.getState().isClosed()) {
sessionTracker.setSession(null);
Session session = new Session.Builder(getBaseContext()).setApplicationId(applicationId).build();
Session.setActiveSession(session);
mCurrentSession = session;
}
if (!mCurrentSession.isOpened()) {
Session.OpenRequest openRequest = null;
openRequest = new Session.OpenRequest(RegisterActivity.this);
if (openRequest != null) {
openRequest.setPermissions(null);
openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK);
mCurrentSession.openForRead(openRequest);
}
}else {
Request.executeMeRequestAsync(mCurrentSession, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
fillProfileWithFacebook( user );
}
});
}
}
理想的には、このメソッドの最初に呼び出しを行い、以前のユーザーをログアウトさせることです。
どのように解決するのですか?
最新のSDKに更新してください。
Facebook SDK v4.7+では@zeuterさんの回答が正しくなりました。
LoginManager.getInstance().logOut();
オリジナルの回答です。
SessionTrackerは使用しないでください。これは内部 (パッケージのプライベート) クラスであり、パブリック API の一部として消費されることを意図していません。そのため、その API は後方互換性を保証することなく、いつでも変更される可能性があります。あなたのコードでは、SessionTracker のインスタンスをすべて削除し、代わりにアクティブなセッションを使用できるようにする必要があります。
質問の答えですが、もしセッションデータを保持したくないのであれば、単に closeAndClearTokenInformation を呼び出すだけです。 を呼び出すだけです。
関連
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
-
[解決済み] Androidの連絡先リストを呼び出すには?
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] バイト配列の画像ファイルをビットマップに変換するには?
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] アンドロイドのdatepickerダイアログで最大の日付を設定するには?
-
[解決済み] ViewPager2でスワイプを無効にするには?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CardView layout_width="match_parent "が親のRecyclerViewの幅と一致しない。
-
[解決済み] AsyncTaskを複数回実行する
-
[解決済み] onCreate(Bundle savedInstanceState)とは?
-
[解決済み] Studio 3.4 をアップデートしたら、引数の leftShift() メソッドが見つかりませんでした。
-
[解決済み] Android: ランドスケープモード用の代替レイアウト xml
-
[解決済み] ArrayList<MyCustomClass>をJSONArrayに変換する。
-
[解決済み] APKが署名済みかデバッグビルドかを確認するには?
-
[解決済み] FABアイコンの色を設定する
-
[解決済み] 文字列リソースにHTML?
-
[解決済み] <string> XMLで改行やタブを作るには(eclipse/android)?