2014-01-04 4 views
0

Я работаю над приложением, в котором я столкнулся с проблемой. Я делаю вход в facebook с помощью facebook sdk в моем приложении, в котором разрешает человек (с помощью которого я создал пример на facebook), успешно выполняет вход в систему, но когда другой человек делает вход в систему, он не может войти (я думаю, сеанс , но состояние сеанса закрыто) теперь я запутался в том, что делаю. Я искал через Интернет и читал документ, но моя проблема не решена, пожалуйста, помогите мне решить эту проблему. спасибо мой код нижеFacebook не работает корректно

public class MainFragment extends Fragment{ 

    private static final String TAG = "deepak"; 
    private UiLifecycleHelper uiHelper; 
    Boolean isInternetPresent; 
    private TextView albumTextView; 
    private static String APP_ID = "xxxxxxxxxxxxxxxxx"; 
    Facebook facebook; 
    Session session; 
    private boolean flag = false; 
    static ArrayList<String> allNames; 
    static ArrayList<String> uid; 
    static ArrayList<String> picUrl; 

// String[] pics = new String[]{}; 
// String[] uids; 
// String[] allnames; 

    JSONArray jArray; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View view = inflater.inflate(R.layout.activity_main, container, false); 
     LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton); 
     authButton.setReadPermissions(Arrays.asList("read_friendlists", "user_photos", "friends_photos")); 
     albumTextView = (TextView) view.findViewById(R.id.text_viet_albul); 
     authButton.setFragment(this); 
     facebook = new Facebook(APP_ID); 
     allNames = new ArrayList<String>(); 
     uid = new ArrayList<String>(); 
     picUrl = new ArrayList<String>(); 

     ConnectionDetector cd = new ConnectionDetector(getActivity()); 
     isInternetPresent = cd.isConnectingToInternet(); 
     checkInternetConnection(); 

     return view; 
    } 

    private void checkInternetConnection() { 
     // TODO Auto-generated method stub 
     if(!isInternetPresent) {      
      // Internet connection is not present      
      // Ask user to connect to Internet      
      showAlertDialog(getActivity(), "No Internet Connection", "You don't have internet connection.", false);     
      } 
     } 


    public void showAlertDialog(Context context, String title, String message, Boolean status) { 
     AlertDialog alertDialog = new AlertDialog.Builder(context).create();   
     // Setting Dialog Title   
     alertDialog.setTitle(title);   
     // Setting Dialog Message   
     alertDialog.setMessage(message);     
     // Setting alert dialog icon   
     //alertDialog.setIcon((status) ? R.drawable.success : R.drawable.fail);   
     // Setting OK Button   
     alertDialog.setButton("OK", new DialogInterface.OnClickListener() 
     {    
      public void onClick(DialogInterface dialog, int which) 
      {  
       MainActivity.finishIfNetworkIsNotWorking(); 
      }   
     });   
     // Showing Alert Message   
     alertDialog.show();  

    } 

    private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
     if (state.isOpened()) { 
      Log.i(TAG, "Logged in..."); 
     } else if (state.isClosed()) { 
      Log.i(TAG, "Logged out..."); 

     } 
    } 

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

     } 
    }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     uiHelper = new UiLifecycleHelper(getActivity(), callback); 
     uiHelper.onCreate(savedInstanceState); 

    } 


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

     Session session = Session.getActiveSession(); 
     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); 
     Session.getActiveSession().onActivityResult(getActivity(), requestCode, resultCode, data); 


    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     uiHelper.onPause(); 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     uiHelper.onDestroy(); 

    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     uiHelper.onSaveInstanceState(outState); 

    } 
} 
+0

Какая Ваша ошибка? – GrIsHu

+0

нет ошибки .. – Deepak

+0

когда в i отлаживается, тогда он переходит внутрь else if (state.isClosed()) { \t Log.i (TAG, «Записан ...»); \t \t} in onSessionStateChange (сеанс сеанса, состояние SessionState, исключение исключения) и не вошли в систему ...) – Deepak

ответ

0

ли вы выйти при смене пользователя? Иногда ваши токены или сеанс сохраняются в настройках общего доступа, а когда вы запускаете приложение, оно загружает токены из файла и создает сеанс. Ваш метод выйти должен быть как следующий:

private void onClickLogout() { 
    Session session = Session.getActiveSession(); 
    if (!session.isClosed()) { 
     session.closeAndClearTokenInformation(); 
    } 
} 

Вы получаете активный сеанс?

+0

да, я вышел из системы – Deepak

+0

и когда вы входите в систему с другим пользователем, что происходит? –

+0

, когда другой пользователь выполняет вход в систему, тогда эта часть программы запускает его внутри else if (state.isClosed()) {Log.i (TAG, «Logged out ...»); } в onSessionStateChange (сеансовый сеанс, состояние SessionState, исключение исключения) и вышли из системы, не вошли в систему ...) – Deepak

0

Использование

Session.getActiveSession().closeAndClearTokenInformation(); 

после получения достаточного количества деталей или процесс осуществляется с помощью зарегистрированного аккаунта. Поэтому при повторном входе в систему он автоматически ищет новый токен у пользователя facebook.

+0

этот код, где я должен использовать. означают, в котором меход. – Deepak

+0

попробуйте позвонить в ondestroy. –

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