나는이 질문에 답을 얻었으나 하루 종일 쓰레드를 읽었으며 발견 할 수있는 모든 수정 사항을 적용했으며 여전히 문제가 있음을 알고 있습니다.Facebook SDK + iPhone SDK + SSO
내 앱이 webView 대신 Facebook의 앱으로 인증 할 수 있도록 Facebook SDK의 새로운 SSO 기능을 구현하려고합니다. 내 앱이 Facebook의 앱으로 전환하면 몇 초 동안로드되고 다시 전환되지만 토큰은 여전히 null입니다. 나는 내 응용 프로그램에 대한 URL 방식과 관련이있다 느낌했지만 나는 많은 튜토리얼을 따라 내 현재 PLIST 값이 올바른지 꽤 확신했다 : 여기
내가 내 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
방금 확인한 응용 프로그램은 샌드 박스 모드가 아니며 해당 응용 프로그램의 개발자입니다. 페이스 북 앱 자체에서 전달 된 정보를 읽지 않고 내 앱에 문제가있는 것처럼 보입니다. –
내가 제안한 이유는 페이스 북이 전환 후 귀하의 애플리케이션으로 다시 리디렉션된다는 것입니다. 내가 아는 한 정상적인 흐름은 필요한 권한을 수락하거나 이전에 이미 동의 한 경우 확인을 누르라는 메시지가 표시됩니다. 사용자 프로필에서 Facebook 응용 프로그램을 제거해보십시오 (개인 정보 보호 설정 -> 응용 프로그램 및 웹 사이트 참조). 다시 응용 프로그램을 실행하십시오. 내가 페이스 북이 당신에게서 어떤 종류의 입력없이 당신의 앱으로 되돌아 가면 안된다고 말했다 ... –