2013-08-16 2 views
0

예를 들어 페이스 북의 예제 코드에서이 코드 조각을 사용하면 사용자의 게시 권한 요청 방법이 제공되지만 문제는 fb 대화 상자가 나타나 사용자에게 "이 응용 프로그램에 권한을 게시 하시겠습니까?" 응용 프로그램이 아래 코드 (이 경우에는 asynctask API 요청)를 계속 실행합니다.이 문제는 bc fb가 내게 부울 또는 다른 방법을 확인하지 않는 경우 (사용자가 권한 요청을 승인 했음) & & 권한이 성공적으로)Facebook-Android SDK : 사용자/fb의 응답이 수신 될 때까지 실행 일시 중지

어쩌면 실종 메신저 뭔가 나 정말 바보 {

는 DB

를 업데이트 할 수 AsyncTask를 API를 요청을 실행} 부여했지만, 그 부분이 없습니다 horriable 구현은? 어떤 전문적으로 공개적으로 사용되는 API도 부울, 문자열을 돌려 주어야한다는 것은 꽤 표준이 아닙니다 ... if 문을 작성하는 데 사용할 수있는 것 같습니까?!?

private void turnOnFacebookPublishing() { 
     Session session = Session.getActiveSession(); 
     if (session != null) { 
      Log.i("sharedprefs fbPublishBool at start of turnOnFbPublish", String.valueOf(sharedprefs.isFacebookPublishingOn())); 
      // Check for publish permissions  
      List<String> permissions = session.getPermissions(); 
      Log.i("permissions prior to if", permissions.toString()); 
      if (!isSubsetOf(PERMISSIONS, permissions)) { 
       pendingPublishReauthorization = true; 
       Session.NewPermissionsRequest newPermissionsRequest = new Session 
         .NewPermissionsRequest(this, PERMISSIONS); 
       session.requestNewPublishPermissions(newPermissionsRequest); 

      } 

// asynctask api request to my api that updates a record on my db that determines a users Facebook publishing preference goes here 
      } 

} 

답변

0

응답을 얻는 방법에는 두 가지가 있습니다.

  1. session.addCallback()을 통해 세션 객체에 Session.Callback을 연결하십시오.
  2. 하여 onActivityResult.

이 그럼 당신은 Session.getActiveSession()를 호출하는 활동이나 조각에서 onActivityResult를 메소드를 오버라이드 (override) newPermissionsRequest.setCallback()를 통해 newPermissionsRequest에 Session.Callback을 연결하고 콜백이 호출되는 것입니다 .

일부 데이터를 직접 반환하는 대신 콜백이 필요한 이유는 비동기 작업 (다른 작업을 시작하기위한 의도 만들기)이기 때문에 onActivityResult를 통해 다시 돌아올 때까지 결과를 알 수 없기 때문입니다.

관련 문제