Facebook 로그인을 사용하는 앱에서 작업하고 있습니다. 앱을 시작할 때 Session.getActiveSession()
을 호출하면 null이 반환됩니다. 나는 세션이 null인지 검사하고 만약 그렇다면 메서드 Session.openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback)
을 실행합니다.Android Facebook SDK openActiveSession (...)이 콜백을 트리거하지 않습니다.
필요한 경우 사용자 정의 로그인 활동으로 사용자를 보내려고하고 그 매개 변수를 true로 설정하면 기본 로그인 권한 창 (필요하지 않음)이 표시되므로 해당 메소드의 부울을 false로 유지하고 싶습니다. 그러나 매개 변수를 false로 설정하면 메서드는 세션 상태 변경을 트리거하지 않으며 관련 콜백 (세 번째 매개 변수)을 트리거하지 않습니다. 매개 변수를 true로 설정 한 다음 후속 대화 상자에서 나가면 콜백이 트리거됩니다.
업데이트 : 목적은 표준 LoginUi를 사용하지 않고 Session
개체를 초기화하는 것입니다. 내가 생각할 수있는 모든 것을 시도했지만 세션을 초기화 할 것이 아무것도 없다. 사용자가 로그인하지 않은 경우 LoginButton
표준을 사용하는 다른 Activity
으로 변경하고 싶습니다.
@Override
public void onCreate(Bundle savedInstanceState) {
Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state, Exception exception) {
Log.i("MainActivity", "calling session callback");
onSessionStateChange(session, state, exception);
}
};
session = Session.getActiveSession();
if(session==null){
Log.i("MainActivity", "session is null");
Session.openActiveSession(this, false, callback);
}
else{
if(session.isClosed()){
Log.i("MainActivity", "session is closed");
startActivityForResult(new Intent("<custom login activity>"), LOGIN_REQUEST);
}
else if(session.isOpened()){
Log.i("MainActivity", "session is opened");
initializeActivity();
}
}
uiHelper = new UiLifecycleHelper(this, callback);
uiHelper.onCreate(savedInstanceState);
}
동일한 결과가 나타납니다. 세션이 null이고 savedInstsanceState가없는 경우이 메서드는 콜백을 세션에 연결하지 않는 것처럼 보입니다. – Wenger