2012-07-02 6 views
1

Я следовал инструкциям, чтобы осуществить процесс входа в Facebook из моего приложения:Facebook SDK IOS выпуск Войти

https://developers.facebook.com/docs/mobile/ios/build/#implementsso

Вот мой код:

- (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]; 

} 

После входа в систему и позволить разрешения к приложению Safari остается открытым, и я должен вернуться обратно в свое приложение вручную, но пример приложения «Hackbook», предоставляемый SDK, после принятия разрешений и входа в Safari, он отклоняет Safari и возвращается обратно в приложение. Я хочу сделать то же самое, но я не был успешным.

Это .plist файл:

enter image description here

Благодаря

ответ

1

Вы установите facebook идентификатор приложения в файле info.plist вашего приложения IOS?

Аналогичные случаи в this link и this link. Надеюсь, это вам поможет.

+0

Спасибо! Я изменил файл .plist, но Safari возвращает ту же ошибку. Я загрузил значения файла .plist. – theomen

+0

Попробуйте еще раз удалить приложение и очистить сборку. – Ananth

+0

Такая же ошибка после очистки сборки и симулятора. Благодарю. – theomen

0

На странице приложения Facebook вы настроили приложение для iOS SSO?

Какая ОС вы используете? Ваш код будет работать только для 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