it-swarm.com.ru

Facebook Войти - iOS 9 - без Safari

Он работал нормально, чтобы войти с logInWithReadPermissions в iOS 8, но как только после обновления до iOS 9 он продолжает открывать Safari или модальный UIWebView.

У кого-нибудь есть такая же проблема?

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorNative];
[login logInWithReadPermissions:@[@"public_profile",@"email"] fromViewController:nil handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    NSLog(@"");
}];
31
user4200570

Использование 20150708 решило это для меня в iOS 9.

Ссылка на SDK: https://developers.facebook.com/resources/FacebookSDKs-iOS-20150708.pkg

9
user4200570

Кажется, что нет способа получить предыдущее поведение, используя новейшие FB SDK в iOS9 +. Вы можете использовать старый SDK для этого. Вот ответ из Facebook на этот вопрос:  enter image description here

39
Lucas Brito

Теперь вы можете изменить loginBehavior на FBSDKLoginBehaviorSystemAccount, чтобы FBSDKLoginManager регистрировал пользователя Facebook в настройках iOS на Facebook;)

FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
fbLogin.loginBehavior = FBSDKLoginBehaviorSystemAccount;

Из FBSDKLoginManager:

Декларация : FBSDKLoginBehaviorSystemAccount
Описание : Если учетная запись недоступна приложению (либо не настроена пользователем, либо не определена SDK), это поведение возвращается к FBSDKLoginBehaviorNative.
Примечание : Если учетная запись недоступна приложению (либо не настроена пользователем, либо не определена SDK), это поведение возвращается к FBSDKLoginBehaviorNative.

15
saltwat5r

Если вы хотите использовать последнюю версию SDK, а также собственное поведение при входе в iOS 9

Редактировать функцию FBSDKServerConfiguration.m, чтобы всегда возвращать true

- (BOOL)useNativeDialogForDialogName:(NSString *)dialogName
{
  return @YES;
}

Откат к Safari по-прежнему работает, если приложение Facebook не установлено

2
vk.edward.li

Я следовал за документом здесь: https://developers.facebook.com/docs/ios/ios9

после добавления пунктов 2 и 3 мое приложение переключается на родное приложение facebook для входа в систему ...

1
dondonhk

Я заметил, что в обоих изменениях также:

Facebook SDK для iOS Changelog v4.x

(v4.6.0 - 10 сентября 2015 г.) Кроме того, в таких диалоговых окнах SDK, как «Вход в систему», «Нравится», «Поделиться», автоматически определяется лучший интерфейс на основе устройства, включая SFSafariViewController вместо Safari. Следуйте нашему руководству по подготовке к iOS 9.

Facebook SDK для iOS Changelog v3.x

(v3.24.0 - 10 сентября 2015 г.) Кроме того, такие диалоги SDK, как «Вход», «Нравится», «Поделиться», автоматически определяют лучший пользовательский интерфейс на основе устройства, включая SFSafariViewController вместо Safari. Следуйте нашему руководству по подготовке к iOS 9.

1
Justin Whitney

если вы хотите, чтобы модальное окно открывалось и запрашивало учетные данные Facebook отдельно от Safari или приложения Facebook, просто используйте последнюю версию Facebook SDK и установите поведение при входе

FBSDKLoginManager *fbLogin = [[FBSDKLoginManager alloc] init];
[login setLoginBehavior:FBSDKLoginBehaviorWeb];

это сделает процесс выхода из системы более удобным и менее запутанным для пользователей.

1
smoothumut

В Swift Когда вы выбираете поведение входа в систему Web, затем откройте всплывающее окно webView. Нет логина перенаправления в браузер сафари 

// Try to login with permissions
    let fbLoginManager : FBSDKLoginManager = FBSDKLoginManager()

    fbLoginManager.loginBehavior = FBSDKLoginBehavior.Web
0
Krishna Gawade

Вы хотите изменить поведение входа по умолчанию следующим образом

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logOut];

login.loginBehavior = FBSDKLoginBehaviorSystemAccount;

[login logInWithReadPermissions:@[@"public_profile", @"email", @"gender",@"user_friends"] fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
{
    if (error)
    {
        // Process error
    }
    else if (result.isCancelled)
    {
        // Handle cancellations
    }
    else
    {       
        // Now that we are authorized to view public profile and email, request that data get data from 'me'
        [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields" : @"first_name, last_name,email,name,gender,birthday"}] startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
        {
        }];
    }
 }];

если у пользователя нет имени пользователя и пароля на Facebook в приложении Settings, появится всплывающее окно safari.

0
user1709076

Используя эту версию с CocoaPods:

pod 'FBSDKCoreKit', '4.4.0'
pod 'FBSDKLoginKit', '4.4.0'
pod 'FBSDKShareKit', '4.4.0'
0
Tai Le