2013-05-12 4 views
0

Я недавно обновил свой код для использования FB android SDK 3.0. Мое приложение имеет четыре действия и НЕ использует фрагменты. Странно мой код работает без проблем на android 2.3.4. Но в android 4.0.4 состояние сеанса всегда «ОТКРЫТИЕ». Я использую UiLifeCycleHelper, а ниже - код в активности запуска.Facebook android sdk 3.0 ошибка входа

SharedPreferences mPrefs; 
String access_token = mPrefs.getString("access_token", null); 

Session currentSession = Session.getActiveSession(); 
if(currentSession == null || currentSession.getState().isClosed()) 
{ 
    if(access_token!=null) 
    { 
     SharedPreferences.Editor editor = mPrefs.edit(); 

    //One time upgrade from FB SDK 2.0 to 3.0 
     editor.putString("access_token", null); 
     editor.commit(); 

     AccessToken new_access_token = AccessToken.createFromExistingAccessToken(access_token, null, null, null, null); 
     currentSession.open(new_access_token, myCallback); 
     Session.setActiveSession(currentSession); 
    } 
    else 
    { 
     Session.openActiveSession(this, true, myCallback); 
    } 
} 
else if (!currentSession.isOpened()) 
{ 
    OpenRequest openRequest = new OpenRequest(this).setCallback(myCallback); 
    openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS); 
    openRequest.setPermissions(Arrays.asList(permissions)); 
    openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); 
    currentSession.openForRead(openRequest); 

} 
else if(currentSession.isOpened()) 
{ 
    handleRequest(currentSession); 

} 


StatusCallback myCallback = new StatusCallback() 
{ 

    @Override 
    public void call(Session session, SessionState state, Exception exception) 
    { 
     handleRequest(session); 

    } 
}; 


public void handleRequest(Session activeSession) 
{ 

    Request new_request = new Request(activeSession, "/me/friends", null, null, new Callback() 
    { 

     @Override 
     public void onCompleted(Response response) 
     { 

      //Process the response and make UI changes. 
     } 

}); 
} 

Сначала я подозревал, что проблема возникла из-за старой версии приложения Facebook (1.9). Поэтому я обновился до последней версии (3.2). Тем не менее проблема остается на Android 4.0.4.

Вот мой код в onActivityResult обратного вызова

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
     super.onActivityResult(requestCode, resultCode, data); 
     Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); 
     uihelper.onActivityResult(requestCode, resultCode, data); 
} 

Есть ли что-нибудь не так?

ответ

0

Вы помните, что добавили код onActivityResult?

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

дать Также смотрите на this other question

+0

См. Мое редактирование. Я рассмотрел вопрос, который вы упомянули. Я использую ListActivity вместо Activity. Это проблема? –

0

Я решил это сам. Просто прокомментировал handleRequest в myCallback.

StatusCallback myCallback = new StatusCallback() 
{ 

    @Override 
    public void call(Session session, SessionState state, Exception exception) 
    { 
    //handleRequest(session); 

    } 
}; 

На этот раз мое приложение работает без особых проблем на обоих Android 2.3.4 и 4.0.4.

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