Facebook 登录按钮处理

Facebook Login Button handling

我在我的应用程序中使用 facebook 登录按钮,但是当用户点击登录时,我必须使用 gps 获取他的当前位置 我能够显示 GPS 未启用的警报对话框,如果它未启用,它不应重定向到 Facebook 登录页面,但它仍然会转到 facbook 登录页面

loginButton = (LoginButton) findViewById(R.id.act_reg_fb_login);
callbackManager = CallbackManager.Factory.create();
loginButton.setOnClickListener(this);

处理登录按钮点击监听器

case R.id.act_reg_fb_login:
        if(isGettingHomeEntityData)

{
    List<String> permissions = new ArrayList<>();
    permissions.add("public_profile");
    permissions.add("email");
    permissions.add("user_likes");
    permissions.add("user_location");
    permissions.add("user_actions.books");
    loginButton.setReadPermissions(permissions);
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            if (loginResult.getAccessToken() == null) {
                showSignUpLoginIssue(Constants.ErrorIssue.ERR_WHILE_LOGIN);
            } else {
                getEmailFromFaceBookAndLogin(loginResult.getAccessToken());
            }
        }

        @Override
        public void onCancel() {
            UIUtility.showSnackBar(coolMain, getString(R.string.err_facebook_cancelled));
        }

        @Override
        public void onError(FacebookException error) {
            Log.e("fb error", String.valueOf(error));
            UIUtility.showSnackBar(coolMain, error.getLocalizedMessage());
        }
    });
    break;
}

else

{
    initializeLocationVariables();
    break;
}

在 Activity

的 onCreate() 中试试这个
 private AccessTokenTracker accessTokenTracker;

    callbackManager = CallbackManager.Factory.create();
    updateWithToken(AccessToken.getCurrentAccessToken());
    accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) {
            updateWithToken(newToken);
        }
    };
    accessTokenTracker.startTracking();

也在 onStop()

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

updateWithToken()方法中:

 private void updateWithToken(AccessToken currentAccessToken) {

    if (currentAccessToken != null) {
        LoginManager.getInstance().logOut();
    } else {
    }
}