追蹤「Android 專用 Facebook 登入」的存取權杖和個人檔案

如果您希望自己的應用程式可以與目前的存取權杖和個人檔案保持同步,您可以實作 AccessTokenTrackerProfileTracker 類別。

這些類別會在存取權杖或個人檔案發生變更時呼叫您的程式碼。 這些類別在內部使用接收器,因此您必須對 Activity 呼叫 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();
}