2015-12-07 5 views
3

Я пытаюсь реализовать google + и facebook sign ins в том же приложении. Я следовал инструкциям Parse и Google, и я впервые успешно реализовал вход в Facebook. Затем я начал следовать инструкциям Google. После этого, что теперь у меня эти 2 функции в моем файле AppDelegate.swift:iOS Facebook и Google логин одновременно?

Для Google:

func application(application: UIApplication, 
    openURL url: NSURL, options options: [String: AnyObject]) -> Bool { 
     return GIDSignIn.sharedInstance().handleURL(url, 
      sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey], 
      annotation: options[UIApplicationOpenURLOptionsAnnotationKey]) 
} 

Для FaceBook:

func application(application: UIApplication, 
    openURL url: NSURL, 
    sourceApplication: String?, 
    annotation: AnyObject?) -> Bool { 
     return FBSDKApplicationDelegate.sharedInstance().application(application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 
} 

Мне нужно объединить эти 2 Do блоки кода в 1, как видно в некоторых сообщениях, такие как

Google SignIn SFSafariViewController/WebView redirects to Google.com after accepting permissions

или они могут оставаться такими же в двух разных блоках? Спасибо

ответ

8

Вам необходимо их комбинировать. Самый простой способ - использовать || в заявлении о возврате. Попробуйте это:

func application(application: UIApplication, 
    openURL url: NSURL, options: [String: AnyObject]) -> Bool { 

     return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as! String, annotation: nil) || 
      GIDSignIn.sharedInstance().handleURL(url, 
      sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String, 
      annotation: options[UIApplicationOpenURLOptionsAnnotationKey] as? String) 
} 
+0

эй спасибо это действительно круто. Я не знаю, есть ли у вас момент, но можете ли вы объяснить, как это работает? Возврат "или" || кажется небезопасным .. как он решает/знает, какой обработчик использовать? – darkheartfelt

+0

спасибо - & no prob! Функции Facebook и Google делегата предназначены для возврата FALSE, если URL-адрес не предназначен для них, и TRUE, если URL-адрес успешно обработан. Так что нормально называть их обоих, если необходимо, и пусть они скажут вам, что URL-адрес не предназначен для них. Если любая из функций успешна, мы передаем значение TRUE. Имеют смысл? – lonesomewhistle

0

Вы бы хорошо служил, чтобы использовать Google удостоверений Toolkit (теперь запаковывает в Firebase) для достижения этой цели и позволить расширения другим ВПЛ, а также

Смежные вопросы