Страница входа в Facebook показывает пустую страницу в IOS 9

Я использую FBSDKCoreKit (4.12.0) FBSDKLoginKit (4.12.0) сначала я получаю экран 1

Этот метод никогда не вызывается.

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email",@"public_profile"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    //never called
}];

получение этого предупреждения

 Warning: Attempt to present <FBSDKContainerViewController: 0x16570810> on <ViewController: 0x16528870> whose view is not in the window hierarchy!

введите здесь описание изображения

Затем я нажимаю кнопку «ОК», я получаю пустую страницу, не переходя на другую страницу.

введите здесь описание изображения

Plist-файл, который я использовал,

Для безопасности Транспост

    <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
            <key>NSExceptionDomains</key>
            <dict>
                <key>facebook.com</key>
                <dict>
                    <key>NSExceptionRequiresForwardSecrecy</key>
                    <false/>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                </dict>
                <key>fbcdn.net</key>
                <dict>
                    <key>NSExceptionRequiresForwardSecrecy</key>
                    <false/>
                    <key>NSIncludesSubdomains</key>
                    <true/>
                </dict>
            </dict>
        </dict>

Query schems


    <key>LSApplicationQueriesSchemes</key>
        <array>
            <string>fbauth</string>
            <string>fbapi</string>
            <string>fb-messenger-api</string>
            <string>fbauth2</string>
            <string>fbshareextension</string>
            <string>fbapi20130214</string>
            <string>fbapi20130410</string>
            <string>fbapi20130702</string>
            <string>fbapi20131010</string>
            <string>fbapi20131219</string>
            <string>fbapi20131219</string>
            <string>fbapi20140410</string>
            <string>fbapi20140116</string>
            <string>fbapi20150313</string>
            <string>fbapi20150629</string>
            <string>fb-messenger-api20140430</string>
        </array>
        <key>CFBundleURLTypes</key>
        <array>
            <dict>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>fb268237443567174</string>
                </array>
            </dict>
        </array>
        <key>FacebookAppID</key>
        <string>268237443567174</string>
        <key>FacebookDisplayName</key>
        <string>MyAPP</string>

person MuraliMohan    schedule 17.06.2016    source источник
comment
Вы решили эту проблему?   -  person Marco Grieco    schedule 06.07.2016
comment
@marco Grieco: да, решено   -  person MuraliMohan    schedule 07.07.2016


Ответы (2)


Как я нашел решение вышеуказанной проблемы

1) Раньше я создал кнопку и дал класс FBLoginButton, и в действии я написал так

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithReadPermissions:@[@"email",@"public_profile"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    //never called
}];

Модификация для решения: Удален класс FBLoginButton и поставлен только UIButton

2) Используйте оба метода ios 8 и ios 9, как показано ниже, написанное в AppDelegate.

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
    return [[FBSDKApplicationDelegate sharedInstance] application:app
                                                          openURL:url
                                                sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                       annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{

    return [[FBSDKApplicationDelegate sharedInstance] application:application
                                                          openURL:url
                                                sourceApplication:sourceApplication
                                                       annotation:annotation
            ];
}
person MuraliMohan    schedule 07.07.2016
comment
Кажется, я не могу добавить два метода в appdelegate, появляется ошибка объявления Duplicate - person Super Xtreem; 19.11.2016
comment
Та же проблема, братан. Повторяющаяся декларация. Как это сработало для вас? я только скопировал и вставил - person Super Xtreem; 24.11.2016
comment
@SuperXtreem второй содержит ключевое слово аннотации, но первый не содержит, тогда как вы можете получить дубликат? - person MuraliMohan; 24.11.2016
comment
не могли бы вы поделиться своим почтовым идентификатором? я отправлю вам снимок экрана - person Super Xtreem; 24.11.2016

Я использовал код do для входа в Fabook, оба отлично работают на iOS 8 и 9. Надеюсь, это вам поможет.

[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name,first_name,last_name"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
        if (!error) {
           //Login success and callback here
        } else {
           //Login failed
        }
    }];
person Trung Phan    schedule 17.06.2016