@Override
 public void onMe2AuthError(Me2DayModel model, String message) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   view.showError(message);
   prefModel.initMe2DayInfo();
 }
 @Override
 public void onCompleted(GraphUser user, Response response) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   if (user == null) {
     view.showError(response.getError().getErrorMessage());
   } else {
     l.d("facebook login result : " + user.getInnerJSONObject().toString());
     SNSLoginData data = app().getUserConfig().loginData;
     data.nickName = user.getLastName() + user.getFirstName();
     data.sns = EXTRA_AUTO_LOGIN_FACEBOOK;
     data.snsHome = user.getLink();
     data.userId = (String) user.getProperty("email");
     try {
       data.profileImage =
           ImageRequest.getProfilePictureUrl(
                   user.getId(),
                   FacebookModel.PROFILE_IMAGE_SIZE,
                   FacebookModel.PROFILE_IMAGE_SIZE)
               .toString();
     } catch (MalformedURLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
     }
     prefModel.setAutoLogin(true);
     prefModel.setAutoLoginAction(EXTRA_AUTO_LOGIN_FACEBOOK);
     loginModel.loginSNS(data);
   }
 }
 @Override
 public void onLoginError(LoginModel model, String message) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   if (EXTRA_JOIN_ACTION.equals(message)) {
     view.showAgree();
     startActivityForResult(new Intent(this, SNSJoinActionActivity.class), REQUEST_JOIN_ACTION);
     // 성공으로 간주하고 약관동의 페이지로 이동
   } else view.showError(message);
 }
 @Override
 public void onLoginSuccess(LoginModel model) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   startActivity(new Intent(this, MainFragmentActivity.class));
   finish();
 }
 @Override
 public void onTwitterAuthSuccess(TwitterModel model, AccessToken access) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   prefModel.setTwitterAccessToken(access);
   twModel.loadTwitUserInfo(access);
 }
 @Override
 public void onTwitterUserInfoComplete(TwitterModel model, SNSLoginData data) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   prefModel.setAutoLogin(true);
   prefModel.setAutoLoginAction(EXTRA_AUTO_LOGIN_TWITTER);
   loginModel.loginSNS(data);
 }
 @Override
 public void onYozmAuthLoaded(YozmModel model, OAuthConsumer consumer) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   AccessToken token = new AccessToken(consumer.getToken(), consumer.getTokenSecret());
   prefModel.setYozmAccessToken(token);
   yozmModel.loadYozmUserInfo(consumer);
 }
 @Override
 public void onYozmBaseInfoLoaded(YozmModel model, String authUrl) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   l.i("yozm LoginUrl : " + authUrl);
   Intent loginIntent = new Intent(this, YozmLoginActivity.class);
   loginIntent.putExtra(EXTRA_URL, authUrl);
   startActivityForResult(loginIntent, REQUEST_YOZM_LOGIN);
 }
 @Override
 public void onTwitterBaseInfoLoaded(TwitterModel model, String loginUrl) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   Intent loginIntent = new Intent(this, TwitterLoginActivity.class);
   loginIntent.putExtra(EXTRA_URL, loginUrl);
   startActivityForResult(loginIntent, REQUEST_TWITTER_LOGIN);
   l.i("twitter auth url : " + loginUrl);
 }
 @Override
 public void onMe2BaseInfoLoaded(Me2DayModel model, String loginUrl) {
   // TODO Auto-generated method stub
   // 아이디 인증 웹뷰 호출
   view.dismissLoading();
   Intent loginIntent = new Intent(this, Me2DayLoginActivity.class);
   loginIntent.putExtra(EXTRA_URL, loginUrl);
   startActivityForResult(loginIntent, REQUEST_ME2DAY_LOGIN);
   l.i("me2LoginUrl : " + loginUrl);
 }
 @Override
 public void onMe2AuthSuccess(Me2DayModel model, String authKey, String userId) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   prefModel.setMe2LoginKey(authKey);
   prefModel.setMe2LoginId(userId);
   // 자동로그인 설정
   me2Model.setUserInfoCallback(this);
   me2Model.loadMe2UserInfo(userId);
 }
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   // TODO Auto-generated method stub
   super.onActivityResult(requestCode, resultCode, data);
   if (resultCode == Activity.RESULT_OK) {
     switch (requestCode) {
       case REQUEST_FACEBOOK_LOGIN:
         view.showLoading();
         fbModel = new FacebookModel(this);
         fbModel.loadFBUserInfo(Session.getActiveSession(), this);
         break;
       case REQUEST_TWITTER_LOGIN:
         twModel.loadTwitAccessToken(data.getStringExtra(EXTRA_URL));
         break;
       case REQUEST_ME2DAY_LOGIN:
         me2Model.loadMe2AuthInfo();
         break;
       case REQUEST_YOZM_LOGIN:
         yozmModel.loadYozmAuthInfo(data.getStringExtra(EXTRA_URL));
         break;
       case REQUEST_JOIN_ACTION:
         checkAutoLogin();
         break;
     }
   } else if (resultCode == Activity.RESULT_CANCELED) {
     switch (requestCode) {
       case REQUEST_FACEBOOK_LOGIN:
         view.showError(data.getStringExtra(EXTRA_MSG));
         break;
       case REQUEST_TWITTER_LOGIN:
         break;
       case REQUEST_ME2DAY_LOGIN:
         break;
       case REQUEST_YOZM_LOGIN:
         break;
       case REQUEST_JOIN_ACTION:
         break;
     }
   }
 }
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   // TODO Auto-generated method stub
   ThemeUtils.darkNoTitle(this);
   super.onCreate(savedInstanceState);
   prefModel = new PreferenceModel(this);
   loginModel = new LoginModel(this);
   loginModel.setCallback(this);
   view = new SelectLoginMethodView(this);
   view.setCallback(this);
   setContentView(view);
   // 2013-02-20 자동로그인은 인트로에서 처리하도록 변경
   // checkAutoLogin();
 }
 @Override
 public void onTwitterAuthError(TwitterModel model, String message) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   view.showError(message);
 }
 @Override
 public void onYozmAuthError(YozmModel model, String error) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   view.showError(error);
 }
 @Override
 public void onMe2AuthStart(Me2DayModel model) {
   // TODO Auto-generated method stub
   view.showLoading();
 }
 @Override
 public void onTwitterAuthStart(TwitterModel model) {
   // TODO Auto-generated method stub
   view.showLoading();
 }
 @Override
 public void onLoginStart(LoginModel model) {
   // TODO Auto-generated method stub
   view.showLoading();
 }
 @Override
 public void onYozmUserInfoStart(YozmModel model) {
   // TODO Auto-generated method stub
   view.showLoading();
 }
 @Override
 public void onYozmUserInfoError(YozmModel model, String message) {
   // TODO Auto-generated method stub
   view.dismissLoading();
   view.showError(message);
 }