観察可能な動作は次のとおりです。
- オープン認証アクティビティ
- Facebook SDK ボタンを使用してログインする
- ログアウト(セッションを閉じる)
- アプリを殺す
- アプリを開く
- 認証アクティビティを再度開く
- アクティビティを開くだけで、Facebookは自動的にユーザーをログインさせます
いくつかのコード - auth アクティビティから:
// Facebook callback
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
onSessionStateChange(session, state, exception);
}
};
// Facebook Helper
private UiLifecycleHelper uiHelper;
...
protected void onCreate(Bundle savedInstanceState) {
...
fbAuthBtn = (LoginButton) findViewById(R.id.fbAuthButton);
fbAuthBtn.setApplicationId(getString(R.string.fb_app_id));
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
...
}
...
/**
* Facebook session state changed
*/
public void onSessionStateChange(Session session, SessionState state, Exception exception) {
if (state.isOpened()) {
// Logged In
if (User.getInstance().authenticationType != UserAuthenticationMethod.FACEBOOK) {
showProgress();
FacebookAuthenticator fbAuth = new FacebookAuthenticator(this, handlerFacebook);
fbAuth.authenticate();
}
} else if (state.isClosed()) {
// Logged Out
User.getInstance().logout();
}
}
次のようにログアウトを実装します。
public void logout() {
...
// Logout Facebook
Session fbSession = Session.getActiveSession();
if (fbSession != null) {
fbSession.close();
}
...
}
では、ログアウトを永続的にするにはどうすればよいでしょうか。