检查用户是否已登录Facebook或未登录android

检查用户是否已登录Facebook或未登录android,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我已经开发了一个具有facebook登录功能的应用程序,用于登录应用程序,因此我在应用程序主页中实现了两个按钮,因此当单击facebook登录时,其打开的facebook登录页面将打开,因此我的问题是,当用户已经使用fb登录时,登录按钮应不可见,因此我检查 facebook.isSessionValid()为真或假,但每次都变假 我的代码 String APP_ID = "**************"; fb = new Facebook(APP_ID); lo

我已经开发了一个具有facebook登录功能的应用程序,用于登录应用程序,因此我在应用程序主页中实现了两个按钮,因此当单击facebook登录时,其打开的facebook登录页面将打开,因此我的问题是,当用户已经使用fb登录时,登录按钮应不可见,因此我检查 facebook.isSessionValid()为真或假,但每次都变假

我的代码

        String APP_ID = "**************";
    fb = new Facebook(APP_ID);
    login = (Button) findViewById(R.id.btnFbLogin);


    if(fb.isSessionValid())
    {
        login.setVisibility(View.GONE);
    }

    Toast.makeText(this, "" + fb.isSessionValid(), Toast.LENGTH_LONG).show();

    withoutLogin = (Button) findViewById(R.id.btnWithoutLogin);
    login.setOnClickListener(this);
    withoutLogin.setOnClickListener(this);
}


@Override
public void onClick(View click) {

    if (click == login) {
        loginTofacebook();

    } else {
        Intent intent = new Intent(this, MockTest.class);
        startActivity(intent);
        Toast.makeText(this, withoutLogin.getText().toString(), Toast.LENGTH_SHORT).show();
    }
}

public void loginTofacebook() {
    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);
    if (access_token != null) {
        fb.setAccessToken(access_token);
        Log.d("FB Sessions", "" + fb.isSessionValid());
    }
    if (expires != 0) {
        fb.setAccessExpires(expires);
    }

    {
        fb.authorize(this, new String[]{"email", "user_address ", "user_mobile_phone", "publish_stream", "manage_friendlists", "user_checkins", "friends_checkins", "read_friendlists", "manage_friendlists", "friends_birthday"}, new Facebook.DialogListener() {

            @Override
            public void onFacebookError(FacebookError e) {

                Toast.makeText(MainActivity.this, "fbError", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onError(DialogError e) {

                Toast.makeText(MainActivity.this, "onError", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(Bundle values) {

                SharedPreferences.Editor editor = mPrefs.edit();
                editor.putString("access_token", fb.getAccessToken());
                editor.putLong("access_expires", fb.getAccessExpires());
                editor.commit();

                Intent intent = new Intent(MainActivity.this, Preparation.class);
                startActivity(intent);

            }

            @Override
            public void onCancel() {
                Toast.makeText(MainActivity.this, "onCancel", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
}

希望这会有所帮助

Session session = Session.getActiveSession();
if (session == null) {
                // try to restore from cache
                session = Session.openActiveSessionFromCache(this);
                // Toast.makeText(this, "logout", Toast.LENGTH_LONG).show();
            }
session.isOpenSession(); // return true if login