无法从其他活动退出(Facebook - Android)

时间:2015-11-17 14:52:26

标签: android facebook



我创建了一个应用程序,并成功解决了使用Facebook SDK 4.7.0登录Facebook的问题。我使用的是LoginManager(而不是LoginButton),因为我想为此设置一个自定义按钮 流程是这样的:

  • 打开应用并受到MainActivity的欢迎
  • 点击“开始”按钮,打开SignInActivity,点击“使用Facebook登录”按钮,登录并关闭此活动
  • 然后您再次进入MainActivity屏幕
  • 在导航抽屉滑块中,我在底部有一个LOGOUT按钮,我对其进行了初始化,并且仅在您登录时显示它,即当您的Facebook个人资料的user_id不是null时。

我在logClick按钮onClickListener上实现了以下内容:

FacebookSdk.sdkInitialize(getApplication().getApplicationContext()); LoginManager.getInstance().logOut();

但是当我按下设备上的按钮时,它没有做任何事情(在logcat中只显示ViewPostImeInputStage ACTION_DOWN,这是按下按钮的标准。

我在SO上看到其他帖子,这种方法有效,所以我不明白为什么它在我的案例中不起作用。

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();
            }
        });

1 个答案:

答案 0 :(得分:1)

这对我有用

public class Profile extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile);


}

public void gotoLogin(View view){
    FacebookSdk.sdkInitialize(getApplicationContext());
    LoginManager.getInstance().logOut();
    Intent intent = new Intent(this, Login.class);
    startActivity(intent);
}

}

我遇到了同样的问题,因为我扩展了AppCompatActivity。使用ActionBar可以。希望它能为你完成工作:)