2012-11-01 1 views
5

내 응용 프로그램에는 서버에서 일부 컨텐츠를 보내고 (필요에 따라) 페이스 북에 게시하는 기능이 있습니다. 그것은 (내가 sqlite를 사용하는 스토어 데이터 용) 보내기 서비스를 사용합니다. 서비스에서 페이스 북 세션 e.t.c를 처리 할 수 ​​있습니까? 콘텐츠가 DB에 저장되고 전송 시간이 다를 수 있기 때문에 필요합니다 (연결이 매우 오랜 시간에 끊어 질 수 있으며 연결이 가능 해지면 전송이 시작될 수 있지만 내 애플리케이션의 서비스 만 전송됩니다). 시각). 나는이 사건에 대한 해결책을 찾을 수 없다. (좋은 해결책은 훌륭 할 것이다). 도와주세요.서비스에서 facebook android sdk 사용

답변

4

사용자는 애플리케이션에 명시 적으로 권한을 부여해야하며 Android 서비스는 Activity.startActivityForResult()를 지원하지 않으므로 세션을 열거 나 서비스 재 인증을 통해 새 권한을 추가 할 수 없습니다.

그러나 앱의 활동 중 하나에서 세션을 열거 나 재 인증하면 기본적으로 세션의 상태가 SharedPreferences에 저장됩니다. 이 후에 서비스가 세션을 만들면 SessionState.CREATED_TOKEN_LOADED가 종료됩니다. Session.getState()가 CREATED_TOKEN_LOADED 인 경우, Session은 UI가없는 openForRead()를 사용할 수 있으며, null Activity를 전달할 수 있습니다. 세션에는 활동에 의해 저장된 모든 권한이 부여됩니다.

이 모든 단순화하기 위해, 서비스는 호출 할 수

Session session = Session.openActiveSession(this); 

이 호출은 유효한 토큰이 된 SharedPreferences에 없었다 경우는 null를 돌려줍니다.

앱 UI에 설정 영역이있는 경우 먼저 토큰을 저장하는 가장 쉬운 방법은 설정 패널 중 하나 인 LoginFragment를 포함하는 것입니다. 이렇게하면 사용자가 로그인/로그 아웃 할 수있게되고 세션 상태를 저장해야 서비스가 동일한 앱에있을 때 서비스를 다시 가져올 수 있습니다.