2014-12-08 6 views
0

저는 안드로이드 용 fb SDK v2.2를 사용 중이며 튜토리얼을 따랐으므로 여기서 코드를 반복하지 않을 것입니다. 나는 안드로이드 SDK의 loginbutton를 사용하고 난 사용자가 다음 onSessionStateChange 호출 (예정) 된 FB 로그인 버튼을 클릭하여 로그인 할 때이OnSessionStateChange는 사용자가 앱을 열고 이미 로그인했을 때마다 호출됩니다.

uiHelper = new UiLifecycleHelper(this, new Session.StatusCallback() { 
     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      onSessionStateChange(session, state, exception); 
     } 
    }); 

같은 세션 시작에 콜백을 위해 uiHelper를 설정하고 특정 코드를 호출하여 사용자 정보를 초기화합니다.

이제 사용자가 앱을 죽이는 경우. 그런 다음 앱을 다시 열면 사용자가 로그인 한 상태로 시작됩니다. 문제는 onSessionStateChange가 다시 호출 된 다음 세션 상태가 열려 있다는 사실에 따라 (마치 사용자가 다시 로그인하는 것처럼) "또 다른 무거운 작업 수행"으로 끝납니다. 나는이 행동을 원하지 않는다. 사용자가 로그인하여 실제로 로그인 할 때마다 앱을 열고 로그인했을 때가 아니라 이미 로그인 한 상태 일 때이 무거운 작업을하고 싶습니다.

그 방법을 알고 싶습니다. 그는 로그인을 클릭 할 때 그가 실제로 로그인 할 때 기본적으로 경우를 구별 어떻게 든 불려 갔을 경우, 또는 sessionStateChange를 얻을 수 없습니다. 스피 확인 SDK가 그것을 가지고 있지만 나는 그것이

당신에게

답변

0
감사 찾을 수 없습니다

StatusCallback.call() 메서드는 세션 상태가 변경 될 때마다 호출됩니다. 앱을 콜드 스타트하고 Session 객체를 만들면 몇 가지 상태가 변경되며 그 중 하나가 StatusCallback.call()을 트리거합니다.

할 수 있습니다 :

  1. 은 LoginButton 상에 OnClickListener를 설정하고, 또는
  2. 추가 (아마도 당신의 미래 세션 변경 버튼 클릭에 의해 트리거되는 응용 프로그램을 말하는 몇 가지 설정 상태) 이벤트를 클릭 듣고 UserButton에 대한 UserInfoChangedCallback을 호출하고 콜백에 무거운 것을 두십시오 (LoginButton에 대해 fetch_user_info 속성을 true로 설정해야 함). https://developers.facebook.com/docs/reference/android/current/interface/LoginButton.UserInfoChangedCallback/
  3. 세션을 구성 할 때 해당 세션이 있는지 확인하십시오. CREATED_TOKEN_LOADED 상태.이 경우에는 o로 진행합니다. 사용자가 아무 것도 클릭하지 않아도되는 펜을 참조하십시오. https://developers.facebook.com/docs/reference/android/current/class/SessionState/
+0

고맙습니다. 두 번째 경우에 두 번째 경우는 정상적으로 시작된 버튼 클릭의 로그인 라이프 사이클입니까, 아니면 onclick과 같은 로그인 API를 수동으로 호출해야합니까? 그리고 세 번째 경우에는 좀 더 알 수 있습니까? 세션을 구성하면 무엇을 의미합니까? 나는 보통 콜백 메서드에서 세션을 가져옵니다 ... Thanks again – Snake

+0

두 번째 경우에는 수동으로 아무 것도 호출 할 필요가 없습니다. 3의 경우 세션을 명시 적으로 만들지 않는 경우 (즉, 세션을 가져 오기 위해 LoginButton 만 사용하는 경우) 실제로 적용되지 않습니다. –

+0

고마워 .. 나는 그것을 시도하고 그것을 작동하지 않는 경우 알려주 :) – Snake