Отслеживание маркеров доступа и профилей во «Входе через Facebook» для Android

Чтобы приложение отслеживало текущий маркер доступа и профиль, можно интегрировать классы AccessTokenTracker и ProfileTracker.

Эти классы вызывают код в случае изменения маркера доступа или профиля. Они используют внутренние получатели, поэтому нужно вызвать stopTracking() в действии или вызвать метод onDestroy() фрагмента.

Отслеживание маркеров доступа

Например, чтобы использовать AccessTokenTracker вместо обратного вызова входа:

@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();
}

Отслеживание текущего профиля

Вы можете аналогичным образом использовать ProfileTracker, чтобы отслеживать изменения в текущем профиле:

@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();
}