2012-09-06 2 views
8

나는 새로운 FBSession의 reauthorisation에 대한 질문 (reauthorizeWithPermissions의 몇 가지 있습니다 : 페이스 북 SDK 3.0 completionHandler : : : 동작을페이스 북 아이폰 OS SDK 3.0 재 인증

누군가가, 내 응용 프로그램에 페이스 북을 통해 로그인하면

특정 페이지 나는 그/그녀의 페이스 북의 자격 증명으로 사용자를 다시 인증하고 싶습니다. 이것은 페이지를보고있는 사람과 기록 된 사람이 같은지 확인하기위한 것입니다. 재승 인 권한은 로그인과 동일합니다. 이 경우 사용자 암호를 다시 확인하면됩니다.

따라서 저는 reauthorisationWithPermissions를 사용하고 있습니다. 그리고 나는 FBSessionLoginBehaviorForcingWebView로 동작을 설정하여 사용자가 자신의 자격 증명을 입력하도록합니다. 그러나 이것은 전혀 작동하지 않습니다. 몇 초 동안 빈 웹뷰가 나타나고 사라집니다.이 시점에서 FBSessionStateOpen으로 설정된 상태로 FBSesstionStateHandler 블록을 호출하지만 (completionHandler :) 내에 정의 된 FBSessionReauthorizeResultHandler를 호출하지 못합니다.

그러나 단순히 동작을 기본값 (FBSessionLoginBehaviorWithFallbackToWebView)으로 설정하면 페이스 북 앱/사파리간에 요청을 앞뒤로 전달하여 정상적으로 작동하고 completionHandler를 올바르게 호출하여 호출을 완료합니다. 그러나 기본 동작으로 사용자가 자신의 암호를 다시 입력하도록 강요하지는 않습니다.

그래서 저는 정말 혼란스럽고 웹상의 sdk 문서는 제 경우에는별로 유용하지 않습니다. 누군가 내가 잘못하고있는 것에 대해 조언 해 주시겠습니까? 아니면 SDK의 알려진 버그를 신고 해 주시겠습니까? 그렇다면 어떻게 요구 사항을 충족시킬 수 있습니까? REAUTH 웹보기가 제대로 나올 일단

-(void) reauthThroughFacebook { 

if (!self.facebookSession.isOpen && self.facebookSession.state == FBSessionStateCreatedTokenLoaded) { 
    [self.facebookSession openWithBehavior: FBSessionLoginBehaviorWithNoFallbackToWebView 
         completionHandler: self.stateHandler]; 
} 

if (self.facebookSession.isOpen) { 
    [self.facebookSession reauthorizeWithPermissions: self.userPermissions 
              behavior: FBSessionLoginBehaviorForcingWebView 
            completionHandler:^(FBSession *session, NSError* error){ 
             if (self.facebookSession == session) { 
              [self completedReauthWithSuccess:(error == nil) error:error]; 
             } 
            }]; 
} else { 
    [self completedReauthWithSuccess:NO error:[NSError errorWithDomain: @"No active session found." 
                    code: FBErrorInvalid userInfo: nil]]; 
} 

} 

또한, 어떻게 사용자의 이메일 주소가 자동으로 채워 그것을 변경 사용자 양식을 차단할 수 있는지 확인합니까? 페이스 북 SDK 내에서 웹보기에 액세스하여 이러한 속성을 설정할 수 있습니까?

마지막으로 로그인과 동일한 권한으로 재 인증이 수행되는 경우 액세스 토큰과 만료 날짜는 어떻게됩니까?

미리 감사드립니다.

+0

나는 똑같은 것을 궁금해합니다. sdk 3.1에서는 reauthorizeWithPermissions : behavior : completionHandler : 메소드도 사용되지 않습니다. 나는 – Kevlar

답변

0

이것은 흥미로운 질문입니다. 필자는이 코드를 작성하지 않았으므로 이것이 작동 하는지를 모르지만 FB 세션이 작동하는 방식을 고려할 때 이것은 접근 방식에서 가장 잘 추측됩니다.

하나의 FB 세션을 사용하면이 작업을 수행 할 수 있다고 생각하지 않습니다. 주어진 세션 내에서 FB 인증은 바이너리이며, 사용자가 로그인 (즉, 열린 세션 있음)되어 있는지 여부를 나타냅니다. 다양한 재발행 방법은 추가 사용 권한을 사용하여 인증되었으며 이제는 사용 권한을 추가로 요청하는 방법을 사용하여 더 이상 사용되지 않습니다.

여러 FB 세션을 지원하여 원하는 결과를 달성 할 수 있습니다. 2 차 인증은 기본적으로 두 번째 FB 사용자가 앱에 로그인 할 수있게하는 것과 같습니다. 그런 다음 적절한 시간에 두 번째 세션을 닫습니다. FB 사용자 ID를 비교하여 두 세션이 동일한 FB 사용자임을 강제 할 수 있습니다.

Understanding Sessions 문서의 마지막 단락에서 FB는 여러 세션을 지원하는 방법에 대해 설명합니다.