检查用户是否在Facebook登录或未登录

时间:2014-05-01 10:57:05

标签: android facebook facebook-graph-api

我已经开发了一个应用程序,它具有登录应用程序的Facebook登录功能,所以我在应用程序的主页面中实现了两个按钮,所以当点击登录与Facebook打开的Facebook登录页面所以我的问题是当用户已经用fb登录然后登录按钮应该是不可见的所以我ckeck 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();
            }
        });
    }
}

}

1 个答案:

答案 0 :(得分:2)

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

希望这会有所帮助

相关问题