2014-07-09 7 views
1

로그인. LoginButton은 Facebook SDK의 위젯입니다. 사용자가 로그인하지 않은 상태에서 로그인 한 다음 자동으로 공유 작업을 수행하는 단일 단추를 원합니다. 프로그래밍 방식으로 세션을 열 수는 없었습니다. 사용자 정의 버튼이나 코드를 통해 사용자를 로그인하려면 어떤 코드를 작성해야합니까?안드로이드 페이스 북 SDK는 프로그래밍 내가 (수정하려고 메신저) 다음 예제 프로젝트를 사용하고 사용자

코드를 넣고 모든 세션 로직은 LoginButton 위젯 내부 encapusulated되고, 샘플 프로젝트의 일부입니다. 내 자신의 버튼/코드를 통해 동일한 작업을 수행 할 수 있어야합니다.

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton); 
    authButton.setFragment(this); 

이 주제에 대해 다른 스레드를 찾았지만 답변을 찾을 수 없습니다. 제 3 자 라이브러리를 사용하고 싶지 않습니다. 안드로이드 용 공식 Facebook SDK를 통해이를 달성 할 수 있는지 알고 싶습니다.

답변

0

당신은 다음과 같이 수행 할 수 있습니다

 findViewById(R.id.btn_login_with_facebook).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showProgressDialog(); 
      Session.OpenRequest openRequest = new Session.OpenRequest(LoginActivity.this); 
      openRequest.setCallback(new Session.StatusCallback() { 
       @Override 
       public void call(Session session, SessionState state, Exception exception) { 
        if (state == SessionState.OPENED) { 
         Request.executeMeRequestAsync(session, 
           new FacebookLoginGraphUserCallback(restManager.getUserAdapter())); 
        } else if ((state != SessionState.OPENING) && (!session.isOpened())) { 
         hideProgressDialog(); 
        } 
       } 
      }); 
      Session.openActiveSession(LoginActivity.this, true, openRequest); 
     } 
    }); 

이 하나 개의 기존 프로젝트에서 코드가 나는 그것이 최신 페이스 북-SDK와 완벽한 기능의 모르겠어요을하지만, 그것은 당신에게 주 아이디어를 줄 것이다. 그러나 그러한 일을한다는 것은 당신이 직접 모든 세션 관련 일을해야한다는 것을 의미합니다.

정확하게 이해한다면 더 나은 해결책은 기본 페이스 북 로그인 버튼에 세션 상태 콜백을 설정하는 것입니다. 이 경우 사용자가 로그인 한 후에 원하는 모든 작업을 수행 할 수 있습니다.

1

더 쉬운 방법은 로그인 버튼을 레이아웃에 추가하고 가시성을 없애는 것입니다. 그런 다음 LoginButton에서 performClick()을 호출하면 로그인 워크 플로가 시작됩니다.