2013-08-28 44 views
0

我在我的應用程序中使用Facebook本地登錄身份驗證。當用戶按登錄按鈕時,登錄後我想移動到下一個Activity。但是登錄後,按鈕變爲註銷並保持一段時間,然後在大約20秒後進入下一個活動。安卓Facebook登錄需要太多時間

@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服務器進行身份驗證可能需要時間。互聯網足夠快到您的設備連接到? – 2013-08-28 13:49:41

+0

是的,它速度不夠快。請告訴我任何方式,按下登錄後,我就轉到下一個活動。 –

+0

你可以做的一件事是,在後臺服務中實現Facebook進程,並在用戶點擊登錄按鈕後立即移動到下一個活動。 – 2013-08-28 15:55:16

回答

0

爲了避免使用onpause(),onResume()和onActivityResult()方法的活動。在create()方法中創建一個對話框。隱藏並顯示在這些方法中。