iOS 9 Facebook SDK войти / поделиться


Я столкнулся с проблемой, используя последнюю версию Facebook SDK (4.6) на iOS 9. Для авторизации пользователя я использую FBSDKLoginManager. Я попытался установить это:

loginManager.loginBehavior = FBSDKLoginBehaviorNative;
Но SDK по-прежнему, похоже, всегда использует SFSafariViewController для авторизации Facebook. Вот проблема, с которой я столкнулся. Если пользователь имеет приложение FB, установленное на его устройстве с помощью FacebookAccountA, а затем пытается аутентифицироваться с помощью my app, они представлены этот SFSafariViewController, и они могут аутентифицировать приложение с FacebookAccountB (отдельная учетная запись FB).

Затем в приложении я пытаюсь поделиться со следующим:

FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init];
content.contentURL = [NSURL URLWithString:shareString];

FBSDKShareDialog *dialog = [[FBSDKShareDialog alloc] init];
dialog.fromViewController = self;
dialog.shareContent = content;
dialog.delegate = self;
[dialog show];

По умолчанию для диалогового окна общего доступа используется FBSDKShareDialogModeShareSheet. Общий лист представлен в приложении правильно, и сообщение, кажется, работает, однако ссылка размещена на FacebookAccountA (родной аккаунт приложения), а не на FacebookAccountB (тот, который аутентифицировался с помощью моего приложения).

Итак, если пользователь аутентифицирует мое приложение с другой учетной записью facebook, чем они вошли в свое родное приложение, они могут в конечном итоге публиковать сообщения в учетной записи, которая отличалась от той, которую они использовали для аутентификации моего приложения. Есть ли способ предотвратить это?

Заранее благодарю.

3 9

3 ответа:

Это сделано специально.

В FB SDK v4. 6 и v3. 24 Мы по умолчанию используем Safari View Controller, а не быстрое переключение на собственное приложение Facebook. В iOS 9 самый быстрый-приложения-переключатель потока создает два междоузлия "ExampleApp хотел бы, чтобы открыть Facebook" и "Facebook хочу открыть ExampleApp".

Для сотен миллионов людей, которые вошли в Safari на iOS, они имеют потрясающий опыт.

Используйте SLComposerViewController для совместного использования Fb. Он будет использовать ваше iOS устройство по умолчанию Facebook SDK для входа в систему и установленные приложения.

Ниже приведена ссылка на это: учебник для SLComposeViewController sharing

Надеюсь, это поможет!

Да, это по дизайну на iOS 9, но мы можем легко обойти его!

let dialog = FBSDKShareDialog()
dialog.mode = .Native
if !dialog.canShow() {
    self.mode = .Automatic
}

Ура!