¿Cómo obtener el token de acceso actual en Facebook Android SDK V4?

Quiero comprobar si el usuario está conectado o no dentro de la FragmentActivity principal, pero aunque el usuario ha iniciado sesión

AccessToken.getCurrentAccessToken ()

Devuelve null. ¿Qué estoy haciendo mal en el código de abajo?

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; FacebookSdk.sdkInitialize(context); callbackManager = CallbackManager.Factory.create(); AccessToken accessToken = AccessToken.getCurrentAccessToken(); if (accessToken != null) { if (!accessToken.isExpired()) { } } } 

¿Cómo se registra el usuario a través del LoginButton? Si es así, sucederá después de que chascan el botón de la conexión, así que donde usted está comprobando es demasiado temprano.

Si ya han iniciado sesión, el token de acceso se va a deserializar desde el disco, sin embargo, se trata de una operación asíncrona para que el subproceso de interfaz de usuario no se bloquee. Lo comprueba justo después de inicializar el Sdk, y la operación asíncrona probablemente no se ha completado todavía. Le sugiero que use AccessTokenTracker para responder cuando se carga el AccessToken. Aquí hay un ejemplo que utiliza AccessTokenTracker para su referencia: https://github.com/facebook/facebook-android-sdk/blob/b384c0655fe96db71229bfdcb981a522f3f1e675/samples/Scrumptious/src/com/facebook/scrumptious/usersettings/UserSettingsFragment.java#L75

¿Has llamado a la actividad onActivityResult() del SDK de Facebook de tu actividad? También encontré el mismo problema y resuelto añadiendo este onActivityResult() devolución de llamada.

Android Facebook sdk Inicialización es tomar algún tiempo Inicializar. Por lo que necesita esperar sólo 100 milisegundos antes de llamar a AccessToken.getCurrentAccessToken ()

Una vez que intente esta solución está funcionando para mí

  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; FacebookSdk.sdkInitialize(context); new Handler().postDelayed(new Runnable() { @Override public void run() { callbackManager = CallbackManager.Factory.create(); AccessToken accessToken = AccessToken.getCurrentAccessToken(); if (accessToken != null) { if (!accessToken.isExpired()) { } } } }, 100); } 
  • Inicio de sesión de Facebook en el fragmento en android
  • Cómo cambiar el idioma de com.facebook.widget.LoginButton en Android
  • Establecer permiso para obtener el ID de correo electrónico del usuario desde Facebook
  • Android - Facebook SDK login -> cerrar sesión -> inicio de sesión no funciona
  • android - cómo cambiar el texto en facebook botón de inicio de sesión
  • Facebook Android SDK 3.0, cómo compartir contenido sin el LoginButton
  • Inicio de sesión de Android Facebook SDK 4.0 con LoginManager
  • Facebook onCompleted Email java.lang.NullPointerException
  • ¿Por qué el ID de aplicación de Facebook de repente se convierte en no válido?
  • Prácticas recomendadas (lo mejor para Android): autenticar a un usuario con acceso a Facebook o Google
  • Facebook Android SDK 4.0.0 no obtener información del perfil
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.