Cómo comprobar los usuarios que ya han iniciado sesión en android (Facebook SDK 4.0)

Aquí está mi código:

public class LocationDetailActivity extends ActionBarActivity { private CallbackManager mCallBackManager; private FacebookCallback<LoginResult> mCallBack; private ImageView mBtnBack; AccessToken token; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.location_detail_layout); FacebookSdk.sdkInitialize(getApplicationContext()); share = (ImageButton) findViewById(R.id.imageShare); token = AccessToken.getCurrentAccessToken(); share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(token == null) { final Dialog dialog = new Dialog(LocationDetailActivity.this); dialog.setContentView(R.layout.share_custom_dialog); dialog.setTitle("Login as:"); dialog.show(); mCallBackManager = CallbackManager.Factory.create(); mCallBack = new FacebookCallback<LoginResult>() { @Override public void onSuccess(LoginResult loginResult) { Profile profile = Profile.getCurrentProfile(); if(profile!=null){ dialog.cancel(); ShareDialog shareDialog = new ShareDialog(LocationDetailActivity.this); if(shareDialog.canShow(ShareLinkContent.class)){ ShareLinkContent content = new ShareLinkContent.Builder() .setContentUrl(Uri.parse("https://developers.facebook.com")) .build(); shareDialog.show(content); } } } @Override public void onCancel() { } @Override public void onError(FacebookException e) { } }; LoginButton loginButton = (LoginButton)dialog.findViewById(R.id.login_button); loginButton.setReadPermissions("user_friends"); loginButton.registerCallback(mCallBackManager, mCallBack); } else if(token != null){ ShareDialog shareDialog = new ShareDialog(LocationDetailActivity.this); if(shareDialog.canShow(ShareLinkContent.class)){ ShareLinkContent content = new ShareLinkContent.Builder() .setContentUrl(Uri.parse("https://developers.facebook.com")) .build(); shareDialog.show(content); } } } }); @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); mCallBackManager.onActivityResult(requestCode, resultCode, data); } 

}

Quiero comprobar si el usuario ya ha iniciado sesión desde la aplicación de Facebook. Si no lo hicieron, mi aplicación mostrará un cuadro de diálogo personalizado con el botón de inicio de sesión. De lo contrario, mi aplicación mostrará el diálogo Compartir . Pero cuando hago clic en mi botón, el cuadro de diálogo personalizado siempre se mostrará incluso he conectado en Facebook. Por favor ayúdeme a arreglar esto. ¡Gracias de antemano! 😉

Más información: token AccessToken = AccessToken.getCurrentAccessToken ();

En una investigación rápida, debe implementar nuevos métodos para verificar una sesión activa en facebook SDK 4.0, como:

  • Inicializado su Facebok SDK (supongo que ya lo haces)
  • Implementar AccessTokenTracker

Tratar de ver este post , supongo que puede ayudarle

  • ¿Cómo integrar Google Plus y Facebook Authentication juntos en la misma actividad del proyecto Android?
  • Obtención de hash clave de android para trigger.io módulo facebook
  • No se puede usar el permiso publish_stream - Facebook SDK para Android 3.0
  • Generar un hash clave para aplicaciones de Facebook en Android
  • Facebook Compartir imagen Url junto con el enlace en android
  • Convertir Facebook JSON created_time de formato String a formato largo
  • Facebook Android SDK v2.3 Llamada inesperada a LoginManager.onActivityResult
  • Cómo obtener notificación de estado en tiempo real con Facebook SDK a través de escuchas
  • No has iniciado sesión. Inicia sesión e inténtalo de nuevo.
  • El fragmento de inicio de sesión de Facebook cierra la aplicación, utilizando Facebook SDK 3.0.1
  • Error de Facebook: permitir clave: configurar los hashes de su clave de aplicación en dev.facebook android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.