2013-04-09 1 views
0

나는 매 x 시간마다 페이스 북에서 가져온 일부 데이터를 백그라운드로 업데이트하는 주요 활동과 서비스를 가지고있다.서비스에 페이스 북 세션 전달 (SDK 3.0.1)

내가 마지막으로 (2.X에서) 새로운 SDK 3.0.1로 이동하고있어 요즘에

와 나는 서비스에 페이스 북의 세션을 통과에 문제가 : 서비스 실행하는 경우

을 때 주를 액티비티가 여전히 정상적으로 동작하고 있습니다. 그렇지 않으면 내 세션이 null이므로 session == null이기 때문에 if (session.isOpened()) {...}에서 충돌합니다.

여기 내 코드입니다 :

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    Log.i("ServiceUpdate", "Received start id " + startId + ": " + intent); 

    session = Session.getActiveSession(); 

    startservice(); 
    return START_STICKY; 
} 


private void startservice() { 

    timer.scheduleAtFixedRate(new TimerTask() { 
     public void run() {   
      if (session.isOpened()) { 
       if (isOnline()) { 
        Log.i("ServiceUpdate", "start timer"); 

        update(); 

        Log.i("ServiceUpdate", "end timer"); 
       } 
      } 

    }, 600000, 6 * 3600000); 

} 

내가 SDK 2.x를 함께 할 수 사용으로 저장 acces_token와 expire_time와 세션을 초기화해야합니까?

감사합니다.

답변

2

세션의 기본 동작은 Android의 SharedPreferences에 토큰 정보를 저장하는 것이므로 서비스에서 Session.openActiveSessionFromCache를 호출 할 수 있어야합니다. null이 반환되면 사용자가 아직 Facebook에 연결하지 않았다는 의미입니다.

+0

예, 내 활동이 실행되지 않아도 작동합니다. – user1345108

+0

불행히도 내 의견을 수정해야합니다 : 내 서비스에서 작업 세션을 얻을이 방법은 있지만 내 MainActivity 세션이 닫히지 않도록 새 활성 세션이됩니다. MainActivity와 Service에서 동시에 활성화 된 세션과 열린 세션을 동시에 사용할 수 있습니까? SDK 2.x를 사용하여 가능하고 쉽게 ... 어쩌면 내가 전에했던 것처럼 access_token을 전달해야합니다 ... – user1345108

+1

활성 세션은 Session 클래스 내에 유지되는 정적 싱글 톤 인스턴스입니다. 귀하의 유스 케이스의 경우, 나는 먼저 Session.getActiveSession이 null (서비스 및 MainActivity 모두)인지 확인한 다음, 새로운 활성 세션을 작성하십시오. –