2012-07-02 6 views
1

로그인 문제 : 여기 https://developers.facebook.com/docs/mobile/ios/build/#implementsso페이스 북 SDK IOS 내가 내 응용 프로그램에서 페이스 북에 로그인 프로세스를 구현하기 위해 지시를 따랐다

내 코드입니다 :

- (IBAction)facebookButton:(id)sender { 

    facebook = [[Facebook alloc] initWithAppId:@"383032031757454" andDelegate:self]; 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    if ([defaults objectForKey:@"FBAccessTokenKey"] 
     && [defaults objectForKey:@"FBExpirationDateKey"]) { 
     facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
     facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
    } 

    if (![facebook isSessionValid]) { 
     NSArray *permissions = [[NSArray alloc] initWithObjects: 
           @"user_likes", 
           @"read_stream", 
           nil]; 
     [facebook authorize:permissions]; 
     permissions=nil; 
    }  
} 

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

- (void)fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults synchronize]; 

} 
로그인 후

허용 권한 앱에 사파리가 열려 있고 수동으로 내 앱으로 돌아 가야하지만, 사파리 내에서 권한 및 로그인을 수락 한 후 SDK와 함께 제공된 샘플 앱 '해킹 북'이 Safari를 닫고 다시 앱으로 돌아갑니다. 나는 똑같이하고 싶지만 성공하지 못했습니다.

이것은 .plist 파일입니다

enter image description here

감사

답변

1

당신이 당신의 iOS 앱의 info.plist 파일에 페이스 북의 응용 프로그램 ID를 설정할 수 있나요?

비슷한 사례는 this linkthis link입니다. 희망이 도움이됩니다.

+0

감사합니다. .plist 파일을 수정했지만 Safari가 동일한 오류를 반환합니다. .plist 파일 값을 업로드했습니다. – theomen

+0

다시 한번 앱을 삭제하고 빌드를 청소하십시오. – Ananth

+0

빌드 및 시뮬레이터를 청소 한 후에도 같은 오류가 발생합니다. 감사. – theomen

0

앱 Facebook 페이지에서 iOS SSO 용으로 앱을 구성 했습니까?

사용중인 OS는 무엇입니까? 코드가 4.2 이상에서만 작동합니다.

지침을 완전히 따르지 않았습니다. plist 파일이 약간 잘못되었습니다 (문제가 아닌 것 같습니다).

+0

5.0이 사용 중이므로 잘되어야한다고 생각합니다. 이전의 plist 버전은 Facebook에서 보여주는 것과 정확히 동일하지만 작동하지 않습니다. 감사. – theomen

1

Facebook.m 내부를 약간 파서 왜 효과가 없는지 쉽게 판단 할 수 있습니다. handleOpenURL: 방법이 Facebook.m에 있는지 확인하십시오.

// Facebook.m 
- (BOOL)handleOpenURL:(NSURL *)url { 
    // If the URL's structure doesn't match the structure used for Facebook authorization, abort. 
    if (![[url absoluteString] hasPrefix:[self getOwnBaseUrl]]) { 
     return NO; 
    } 

    NSString *query = [url fragment]; 

    // Version 3.2.3 of the Facebook app encodes the parameters in the query but 
    // version 3.3 and above encode the parameters in the fragment. To support 
    // both versions of the Facebook app, we try to parse the query if 
    // the fragment is missing. 
    if (!query) { 
     query = [url query]; 
    } 

    NSDictionary *params = [self parseURLParams:query]; 

아래의 중단 점을 NSDictionary *params = [self parseURLParams:query];으로 설정하고 그 내용을 읽습니다. 로그인이 작동하지 않는 이유는 오류 메시지입니다.

+0

안녕하세요, ARC 버전의 라이브러리를 컴파일하기위한 지침을 따른 후 생성 된 폴더에만 .h 파일이 포함되어 있습니다. .m 파일의 위치가 약간 손실됩니다. 감사. – theomen

관련 문제