私はアプリを作成していて、Facebook SDK 4.7.0を使用してログインすることに成功しました。私はこのためのカスタムボタンを持っているので、LoginManager(LoginButtonではない)を使用しています。
の流れはこのようなものです:アプリとMainActivityで迎え 他のアクティビティからログアウトできません(Facebook - Android)
- オープンして、ログをあなたはFacebookのボタンでサインをクリックしSignInActivityを開き、あなたとし、この活動を閉じ
- 次にMainActivity画面に戻ります
- ナビゲーションドロワースライダーの下にLOGOUTボタンがあり、初期化してログインしたとき、つまりFacebookのプロフィールのuser_idが表示されていないときにのみ表示します
null
。
FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); LoginManager.getInstance().logOut();
をしかし、私はそれが何もしない私のデバイス上のボタンを押したときに(標準である、唯一のViewPostImeInputStage ACTION_DOWN
logcatに表示さボタンを押すために。
私はそれが私の場合には動作しませんなぜ私は理解していないので、この方法は非常に働いている上の他の記事を見ました。
SignInActivity.java
FacebookSdk.sdkInitialize(getApplication().getApplicationContext());
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.e(TAG, "User ID: " + loginResult.getAccessToken().getUserId());
Log.e(TAG, "Auth Token: " + loginResult.getAccessToken().getToken());
SharedPreferences prefs = getSharedPreferences("com.dotfreeride.dotfreeride.login", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putString("userId", loginResult.getAccessToken().getUserId());
editor.putString("fbToken", loginResult.getAccessToken().getToken());
editor.commit();
}
@Override
public void onCancel() {
Toast.makeText(SignInActivity.this, "Login attempt canceled!", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(FacebookException error) {
Toast.makeText(SignInActivity.this, "Login attempt failed!", Toast.LENGTH_SHORT).show();
}
});
MainActivity.java
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FacebookSdk.sdkInitialize(getApplication().getApplicationContext());
LoginManager.getInstance().logOut();
}
});