2011-03-05 2 views
0

FBConnect 최신 SDK를 통해 사용자의 기본 정보를 추출하려고합니다. 내 코드는 간단합니다 :Facebook Graph API로 사용자 정보를 추출하는 동안 인증 오류가 발생했습니다.

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    facebook = [[Facebook alloc] initWithAppId:fbAppId]; 
    NSArray* permissions = [[NSArray arrayWithObjects:@"user_about_me",@"read_stream",nil]retain]; 
    [facebook authorize:permissions delegate:self];  

    [facebook requestWithGraphPath:@"me" andDelegate:self];  
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            fbAppId, @"app_id", 
            [NSString stringWithFormat: @"Some Text"], @"description", 
            @"My Test App", @"name", 
            @"Test Facebook Graph API",@"message", 
            nil]; 

    [facebook dialog:@"feed" andParams:params andDelegate:self]; 
} 
- (BOOL) application: (UIApplication*) application handleOpenURL:(NSURL *)url { 
    return [facebook handleOpenURL:url]; 
} 
- (void) fbDidLogin { 
NSLog(@"FB didLogin"); 
} 
- (void) fbDidNotLogin:(BOOL)cancelled { 
NSLog(@"FB didNotLogin"); 
} 
- (void) request:(FBRequest *)request didLoad:(id)result { 
    NSLog(@"request-didLoad-result"); 
} 
- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response { 
    NSLog(@"received response"); 
} 

이 시점까지 모든 것이 잘 어울립니다. 사용자 벽면에 대화 상자를 통해 피드를 게시하면 문제가 없습니다.

[facebook requestWithGraphPath:@"me" andDelegate:self]; 

그러나 fbDidLogin도 requestDidLoad 둘 다라고 : 내가 함께 이름처럼 사용자의 정보를 얻으려고 할 때 문제가 발생합니다. requestDidLoad를 들어, 나는 그것이 요청 didLoad 전에 호출 될 때 didLoadRawResponse을 확인 :

- (void)request:(FBRequest *)request didLoadRawResponse:(NSData*)data { 

    NSString *response = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
    NSLog(@"Response is = %@",response); 
    [response release]; 
} 

내가 응답 얻을 것은 다음과 같은 인증 오류입니다 :

{"error":{"type":"OAuthException","message":"An active access token must be used to query information about the current user."}} 

이유와 해결책은 무엇인가? 당신은 알려 주시기 바랍니다 질문이있는 경우

+0

fbDidLogin이 호출되지 않는 경우 fbDidNotLogin이 호출되는지 확인하고 "fbAppId"에 대해 올바른 값을 얻길 바랍니다. – Yogesh

+0

@Yogesh : 아니요, fbDidNotLogin도 호출되지 않습니다. 나는 새로운 SDK가 컨트롤을 Facebook 응용 프로그램이나 Safari로 일시적으로 전송할 수 있기 때문에 그 중 하나를 사용할 수 있다고 생각합니다. 사용자가 이미 로그인했는지 여부를 감지하거나 로그인을 요청합니다. 두 경우 모두 확인했습니다. 그리고 네, fbAppId도 정확합니다. 내가 말한대로 나는 벽에 게시 할 수 있습니다. 남은 유일한 문제는 사용자 정보를 추출하는 동안 인증하는 것입니다. – WaJiyaz

+0

흥미 롭기 때문에 벽에 게시 할 때 권한 문제는 아니지만 사용자 정보를 추출하려고 할 때입니다. 미안하지만 내가 전체 코드를 찾지 않으면 내가 도울 수 없어. 또 하나의 제안은 시뮬레이터에서 앱을 삭제하고 다시 인증을 시도하여 문제가 해결되는지 확인하는 것일 수 있습니다. – Yogesh

답변

3

내가 다음 위키에서이 당신을 도울 것입니다 How to retrieve Facebook response using Facebook iOS SDK

희망을 내 모든 코드를 추가 한이 작동하는 코드입니다.

+0

Yogesh에게 감사드립니다. 물론 도움이되었습니다. 그 밖의 무엇이 전체 코드보다 더 명확 할 수 있습니다. 요약하면 새로운 싱글 사인온 (SSO) 기능으로는이 작업을 수행 할 수 없습니다. 액세스하려면 수동 로그인을 구현해야합니다. 다시 한 번 감사드립니다 :) – WaJiyaz

+0

대단히 환영합니다. – Yogesh

관련 문제