AndroidのFacebookログインでアクセストークンとプロファイルをトラッキングする

アプリが常に最新のアクセストークンとプロフィールを持つように設定する場合は、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();
}