Android 如何检查用户是否从Facebook注销或令牌是否过期

Android 如何检查用户是否从Facebook注销或令牌是否过期,android,facebook,android-fragments,facebook-sdk-4.0,Android,Facebook,Android Fragments,Facebook Sdk 4.0,我在MainActivity OnCreate方法中调用了一个片段。在这个片段中,我要求用户登录facebook。我的代码是这样的: public class FbLogin extends Fragment { private AccessToken accessToken; private Profile profile; private ProfileTracker profileTracker; static Access

我在MainActivity OnCreate方法中调用了一个片段。在这个片段中,我要求用户登录facebook。我的代码是这样的:

 public class FbLogin extends Fragment {
        private AccessToken accessToken;
        private Profile profile;
        private ProfileTracker profileTracker;
        static AccessTokenTracker tracker;
        private ProfilePictureView profilepic;
        LoginButton loginButton;
        LoginPrefrence loginPrefrence ;


        private CallbackManager mcallbackManager;

        private FacebookCallback<LoginResult> mcallback = new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                accessToken = loginResult.getAccessToken();
                profile = Profile.getCurrentProfile();
                getFbData(profile);


                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject object, GraphResponse graphResponse) {
                                Log.d("Amc", graphResponse.toString());


                                try {
                                    String id = object.getString("id");
                                    String name = object.getString("name");
                                  //  String email = object.getString("email");
                                    String gender = object.getString("gender");
                                    profilepic.setProfileId(object.getString("id"));

                                  //if want to make it round
                                    /*
                                    profileImageView = ((ImageView)faceBookProfilePictureView.getChildAt(0));
                                bitmap  = ((BitmapDrawable)profileImageView.getDrawable()).getBitmap();
                                  circular.setImageBitmap(bitmap);
                                  profilepic.getChildAt(0);
                                     */



                                   // String birthday = object.getString("birthday");
                                  // String Uri1 =(object.getJSONObject("picture").getJSONObject("data").getString("url"));
                                    Log.d("Amc2",""+id + ", " + name + ", " +""+ ""+ ", " + gender + ", " );
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                    Log.d("Amc2",""+e.toString());
                                }



                            }


                        });
                Bundle parameters = new Bundle();
                parameters.putString("fields", "id,name,email,gender, birthday");
                request.setParameters(parameters);
                request.executeAsync();

            }


            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException e) {

            }

        };

        public FbLogin() {
            // Required empty public constructor
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
            mcallbackManager = CallbackManager.Factory.create();
            tracker = new AccessTokenTracker() {
                @Override
                protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {

                }
            };
            profileTracker = new ProfileTracker() {
                @Override
                protected void onCurrentProfileChanged(Profile oldProfile, Profile newProfile) {
                    getFbData(newProfile);

                }
            };
            tracker.startTracking();
            profileTracker.startTracking();
        }

        @Override
        public void onStop() {
            super.onStop();
            tracker.stopTracking();
            profileTracker.stopTracking();
        }
        @Override
        public void onPause() {
            super.onPause();
            profileTracker.stopTracking();
            tracker.stopTracking();
        }

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

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            return inflater.inflate(R.layout.fragment_fb_login, container, false);
        }

        @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);


            profilepic = (ProfilePictureView)view.findViewById(R.id.pf_view);
            loginPrefrence = new LoginPrefrence(getActivity());
            loginButton = (LoginButton) view.findViewById(R.id.login_button);
            loginButton.setReadPermissions(Arrays.asList("public_profile","email","user_birthday"));
            loginButton.setFragment(this);
            loginButton.registerCallback(mcallbackManager, mcallback);
        }

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

        public void getFbData(Profile prof) {

            if (prof != null) {

                Log.d("Facebook", prof.getFirstName());
                Log.d("Facebook", prof.getName());
                Log.d("Facebook", prof.getId().toString());

            }

        }



    }
公共类FbLogin扩展片段{
专用AccessToken AccessToken;
个人资料;
个人档案跟踪器;
静态跟踪;
私人档案图片查看档案图片;
登录按钮登录按钮;
登录体验登录体验;
私有CallbackManager-mcallbackManager;
private FacebookCallback mcallback=新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
accessToken=loginResult.getAccessToken();
profile=profile.getCurrentProfile();
getFbData(profile);
GraphRequest请求=GraphRequest.newmereRequest(
loginResult.getAccessToken(),
新建GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成公共无效(JSONObject对象、GraphResponse GraphResponse){
Log.d(“Amc”,graphResponse.toString());
试一试{
stringid=object.getString(“id”);
字符串名称=object.getString(“名称”);
//String email=object.getString(“email”);
字符串性别=object.getString(“性别”);
setProfileId(object.getString(“id”));
//如果你想把它弄圆
/*
profileImageView=((ImageView)faceBookProfilePictureView.getChildAt(0));
位图=((BitmapDrawable)profileImageView.getDrawable()).getBitmap();
循环.setImageBitmap(位图);
profilepic.getChildAt(0);
*/
//字符串生日=object.getString(“生日”);
//字符串Uri1=(object.getJSONObject(“图片”).getJSONObject(“数据”).getString(“url”));
Log.d(“Amc2”、“id+”、“+name+”、“+”、“+”+”、“+性别+”、”);
}捕获(JSONException e){
e、 printStackTrace();
Log.d(“Amc2”,“e.toString());
}
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、姓名、电子邮件、性别、生日”);
请求。设置参数(参数);
request.executeAsync();
}
@凌驾
公开作废{
}
@凌驾
公共无效onError(FaceBook例外e){
}
};
公共登录名(){
//必需的空公共构造函数
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
sdkinInitialize(getActivity().getApplicationContext());
mcallbackManager=CallbackManager.Factory.create();
tracker=新的AccessTokenTracker(){
@凌驾
更改当前AccessToken时受保护的无效(AccessToken oldToken、AccessToken newToken){
}
};
profileTracker=新的profileTracker(){
@凌驾
更改当前配置文件时受保护的无效(配置文件旧配置文件、配置文件新配置文件){
getFbData(newProfile);
}
};
tracker.startTracking();
profileTracker.startTracking();
}
@凌驾
公共void onStop(){
super.onStop();
tracker.stopTracking();
profileTracker.stopTracking();
}
@凌驾
公共无效暂停(){
super.onPause();
profileTracker.stopTracking();
tracker.stopTracking();
}
@凌驾
公共空间{
super.ondestory();
tracker.stopTracking();
profileTracker.stopTracking();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment\u fb\u登录,容器,false);
}
@凌驾
已创建视图上的公共void(视图,捆绑保存状态){
super.onViewCreated(视图,savedInstanceState);
profilepic=(ProfilePictureView)view.findViewById(R.id.pf_视图);
LoginPreference=新的LoginPreference(getActivity());
loginButton=(loginButton)view.findViewById(R.id.login_按钮);
setReadPermissions(Arrays.asList(“公共档案”、“电子邮件”、“用户生日”);
setFragment(this);
registerCallback(mcallbackManager,mcallback);
}
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
onActivityResult(请求代码、结果代码、数据);
}
公共void getFbData(Profile prof){
如果(prof!=null){
Log.d(“Facebook”,getFirstName()教授);
Log.d(“Facebook”,prof.getName())
private Boolean isUserLoggedIn(){
    if (AccessToken.getCurrentAccessToken() != null) {
        //user is logged in already
        return true;
    }else{
        return false;
    }
}