2011-10-18 5 views
1

나는이 질문에 답을 얻었으나 하루 종일 쓰레드를 읽었으며 발견 할 수있는 모든 수정 사항을 적용했으며 여전히 문제가 있음을 알고 있습니다.Facebook SDK + iPhone SDK + SSO

내 앱이 webView 대신 Facebook의 앱으로 인증 할 수 있도록 Facebook SDK의 새로운 SSO 기능을 구현하려고합니다. 내 앱이 Facebook의 앱으로 전환하면 몇 초 동안로드되고 다시 전환되지만 토큰은 여전히 ​​null입니다. 나는 내 응용 프로그램에 대한 URL 방식과 관련이있다 느낌했지만 나는 많은 튜토리얼을 따라 내 현재 PLIST 값이 올바른지 꽤 확신했다 : 여기 enter image description here

내가 내 AppDelegate에있는 코드를 구현하고, 의 ViewController 파일 : appDelegate.h

Facebook *facebook; 

appDelegate.m

// Pre 4.2 support 
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    return [facebook handleOpenURL:url]; 
} 

// For 4.2+ support 
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 
    return [facebook handleOpenURL:url]; 
} 

SecondViewController.m

-(IBAction) fbButton { 
    //FACEBOOK INTEGRATION 
    appDelegate.facebook = [[Facebook alloc] initWithAppId:@"222087841143437" andDelegate:appDelegate]; 

    // Check and retrieve authorization information 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
     && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     appDelegate.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     appDelegate.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 
    if (![appDelegate.facebook isSessionValid]) { 
     appDelegate.facebook.sessionDelegate = self; 
     [appDelegate.facebook authorize:permissions]; 
     NSLog(@"Token: %@", [defaults objectForKey:@"FBAccessTokenKey"]); 
    } else { 
     NSLog(@"Already logged in!"); 

    } 
    [appDelegate.facebook requestWithGraphPath:@"me" andDelegate:self]; 

} 


- (void)request:(FBRequest *)request didLoad:(id)result { 
    NSString *nameID = [[NSString alloc] initWithFormat:@"%@ (%@)", [result objectForKey:@"name"], [result objectForKey:@"id"]]; 
    NSMutableArray *userData = [[NSMutableArray alloc] initWithObjects: 
           [NSDictionary dictionaryWithObjectsAndKeys: 
           [result objectForKey:@"id"], @"id", 
           nameID, @"name", 
           [result objectForKey:@"picture"], @"details", 
           nil], nil]; 

    [userData release]; 
    [nameID release]; 
    NSLog(@"DATA RECEIVED: %@", result); 
} 

- (void)request:(FBRequest *)request didReceiveResponse:(NSURLResponse *)response { 
    NSLog(@"request:didReceiveResponse:"); 
} 

- (void)request:(FBRequest *)request didFailWithError:(NSError *)error { 
    NSLog(@"%@", [error localizedDescription]); 
    NSLog(@"Err details: %@", [error description]); 
}; 
- (void)fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[[appDelegate facebook] accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[[appDelegate facebook] expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 
    NSLog(@"Facebook Logged in!"); 

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


} 

[appDelegate.facebook requestWithGraphPath : @ "me"andDelegate : self]를 두 번 호출하지만 그게 문제가 아니라고 생각합니다.

2011-10-18 15:37:33.287 Track[2235:707] Token: (null) 
2011-10-18 15:37:36.578 Track[2235:707] request:didReceiveResponse: 
2011-10-18 15:37:36.584 Track[2235:707] The operation couldn’t be completed. (facebookErrDomain error 10000.) 
2011-10-18 15:37:36.586 Track[2235:707] Err details: Error Domain=facebookErrDomain Code=10000 "The operation couldn’t be completed. (facebookErrDomain error 10000.)" UserInfo=0x1ce480 {error=<CFBasicHash 0x1c9560 [0x3e368630]>{type = mutable dict, count = 2, 
entries => 
    2 : <CFString 0x19a830 [0x3e368630]>{contents = "type"} = <CFString 0x11d230 [0x3e368630]>{contents = "OAuthException"} 
    3 : <CFString 0x1f5b60 [0x3e368630]>{contents = "message"} = <CFString 0x1f8a70 [0x3e368630]>{contents = "An active access token must be used to query information about the current user."} 

내가 도움을 주셔서 감사하고 정말 내가 여기에이 문제를 해결하는에 토론을 놓치지 않았다 희망 : 나는 로그인 버튼을 누르면 다음

는 콘솔에서 미리보기입니다. 다음은 내가 통해 읽고

How to implement Single Sign On (SSO) using facebook ios sdk for iphone Facebook SSO and request iOS SDK Facebook API for iPhone Error: An active access token must be used

답변

0

가 있는지 확인 그 해결책을 찾는 더 성공을 거두었하지 않았는지 (많은의) 몇 페이스 북 응용 프로그램 (당신은 페이스 북에서 만든 실제 적용)가 샌드 박스 모드가 아니며 현재 Facebook 응용 프로그램 (iPhone Facebook 클라이언트)이 현재 로그인 한 사용자가 해당 응용 프로그램의 개발자인지 확인하는 경우.

+0

방금 ​​확인한 응용 프로그램은 샌드 박스 모드가 아니며 해당 응용 프로그램의 개발자입니다. 페이스 북 앱 자체에서 전달 된 정보를 읽지 않고 내 앱에 문제가있는 것처럼 보입니다. –

+0

내가 제안한 이유는 페이스 북이 전환 후 귀하의 애플리케이션으로 다시 리디렉션된다는 것입니다. 내가 아는 한 정상적인 흐름은 필요한 권한을 수락하거나 이전에 이미 동의 한 경우 확인을 누르라는 메시지가 표시됩니다. 사용자 프로필에서 Facebook 응용 프로그램을 제거해보십시오 (개인 정보 보호 설정 -> 응용 프로그램 및 웹 사이트 참조). 다시 응용 프로그램을 실행하십시오. 내가 페이스 북이 당신에게서 어떤 종류의 입력없이 당신의 앱으로 되돌아 가면 안된다고 말했다 ... –