2013-08-28 3 views
0

Я использую аутентификацию на основе Facebook в моем приложении. Когда пользователь нажимает кнопку входа в систему, после входа в систему я хочу перейти к следующему Activity. Но после входа в систему кнопка изменилась, чтобы выйти из системы и остаться там некоторое время, а затем перейти к следующей операции примерно через 20 секунд.Android facebook login занимает слишком много времени

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.activity_main, container, false); 

    LoginButton authButton = (LoginButton) view 
      .findViewById(R.id.authButton); 
    authButton.setFragment(this); 
    authButton.setReadPermissions(Arrays.asList("email")); // permissions 
    internalStorageManipulator = new InternalStorageManipulator(
      getActivity()); 

    return view; 
} 

private Session.StatusCallback callback = new Session.StatusCallback() { 
    @Override 
    public void call(Session session, SessionState state, 
      Exception exception) { 
     if(!IsStateOpened) 
     onSessionStateChange(session, state, exception); 
    } 
}; 

private void onSessionStateChange(Session session, SessionState state, 
     Exception exception) { 
    if (state.isOpened()) { 
     Request.executeMeRequestAsync(session, 
       new Request.GraphUserCallback() { 

        // callback after Graph API response with user 
        // object 
        @Override 
        public void onCompleted(GraphUser user, 
          Response response) { 
         if (user != null && !IsStateOpened) { 
          try { 
           internalStorageManipulator 
             .setLoginState(true); 
           Dashboard dashboard = new Dashboard(getActivity()); 
           internalStorageManipulator.setUserID(user.getId()); 
           internalStorageManipulator.setLoginState(true); 
           internalStorageManipulator.setGCMID(""); 
//         getAsyncProfilePicture(); 

           dashboard.LoginUser(user.getId(), user.asMap().get("email").toString(),user.getUsername(), "", 
             (IHttpRequestCallBack) c); 

          } catch (Exception e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
       }); 
    } else if (state.isClosed()) { 
     Log.i(LOGIN_TAG, "Logged out..."); 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 

    Session session = Session.getActiveSession(); 
    if (!internalStorageManipulator.getLoginState()) 
     if (session != null && (session.isOpened() || session.isClosed())) { 
      onSessionStateChange(session, session.getState(), null); 
     } 
    uiHelper.onResume(); 
} 

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

Возможно, потребуется время для аутентификации с серверами facebook. Достаточно ли интернет, к которому подключено ваше устройство? –

+0

Да, это достаточно быстро. Пожалуйста, скажите мне, каким образом, после чего после входа в систему я просто перешел к следующей активности. –

+0

Одна вещь, которую вы можете сделать, - выполнить процесс facebook в фоновом режиме и перейти к следующему действию, как только пользователь нажмет кнопку входа. –

ответ

0

Чтобы избежать этого используйте OnPause(), onResume() и onActivityResult() методы вашей деятельности. создайте диалог в методе create(). скрыть и показать в этих методах.

Смежные вопросы