private void onSessionStateChange(Session session, SessionState state, Exception exception) {
    String accessToken = "";
    if ((exception instanceof FacebookOperationCanceledException
        || exception instanceof FacebookAuthorizationException)) {
      setResultAndClose(false);
    } else if (state == SessionState.OPENED_TOKEN_UPDATED) {
      accessToken = session.getAccessToken();
      FacebookHelper.saveAccessToken(activity, accessToken);
      try {
        linked = FacebookUtils.isLinkedForWrite(activity, FacebookConstants.PUBLISH_PERMISSIONS);
      } catch (Exception e) {
      }
      if (!linked) {
        FacebookUtils.linkForWrite(
            activity,
            FacebookHelper.getAccessToken(activity),
            false,
            new SocializeAuthListener() {

              @Override
              public void onError(SocializeException error) {
                // TODO Auto-generated method stub
                setResultAndClose(false);
              }

              @Override
              public void onCancel() {
                // TODO Auto-generated method stub
                setResultAndClose(false);
              }

              @Override
              public void onAuthSuccess(SocializeSession session) {

                setResultAndClose(true);
              }

              @Override
              public void onAuthFail(SocializeException error) {
                // TODO Auto-generated method stub
                setResultAndClose(false);
              }
            },
            FacebookConstants
                .PUBLISH_PERMISSIONS); // getNexerciseApplication().getSocializeAuthListener());
      } else {
        setResultAndClose(true);
      }
    }
  }