Seguimiento de los tokens de acceso y perfiles en el inicio de sesión con Facebook para Android

Si quieres que tu aplicación realice un seguimiento del token de acceso y el perfil actuales, puedes implementar las clases AccessTokenTracker y ProfileTracker.

Estas clases llaman a tu código cuando se produce un cambio en el token de acceso o el perfil. Usan receptores internos, de modo que tienes que llamar a stopTracking() en una actividad o llamar al método onDestroy() de un fragmento.

Seguimiento de los tokens de acceso

Por ejemplo, para utilizar el método AccessTokenTracker en vez de usar una devolución de llamada de inicio de sesión:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    callbackManager = CallbackManager.Factory.create();

    accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(
            AccessToken oldAccessToken,
            AccessToken currentAccessToken) {
                // Set the access token using 
                // currentAccessToken when it's loaded or set.
        }
    };
    // If the access token is available already assign it.
    accessToken = AccessToken.getCurrentAccessToken();
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onDestroy() {
    super.onDestroy();
    accessTokenTracker.stopTracking();
}

Seguimiento del perfil actual

Puedes utilizar el método ProfileTracker de un modo similar para realizar un seguimiento de los cambios en el perfil actual:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    callbackManager = CallbackManager.Factory.create();

    profileTracker = new ProfileTracker() {
        @Override
        protected void onCurrentProfileChanged(
                Profile oldProfile,
                Profile currentProfile) {
            // App code
        }
    };
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

@Override
public void onDestroy() {
    super.onDestroy();
    profileTracker.stopTracking();
}