我已经开发了一个应用程序,它具有登录应用程序的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();
}
});
}
}
}
答案 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
希望这会有所帮助