Próbuję użyć Xcode 8 do zbudowania aplikacji z logowaniem do Facebooka przy użyciu Swift 3. Kiedy przełączam się z powrotem na iOS Simulator 9.3, to działa. W iOS 10 otrzymuję ten błąd:
""fbauth2:/" The operation couldn’t be completed. (OSStatus error -10814.)"
i
Optional(Error Domain=com.facebook.sdk.login Code=308 "(null)")
Czy ktoś ma na to rozwiązanie?
Notatka 1 :
Po debugowaniu ten problem to aktualizacja FBSDK expect_challange
. Funkcja SecItemUpdate
wewnątrz security.framework
nie działa. To jest problem z IOS 10
ios
swift
facebook-ios-sdk
ios10
trquoccuong
źródło
źródło
Odpowiedzi:
Błąd OSStatus -10814 występuje, gdy
canOpenURL:
nie można znaleźć żadnej aplikacji , która może otworzyć ten adres URL (w rzeczywistości Facebook próbuje znaleźć swoją aplikację, wywołująccanOpenURL:
argument „fbauth2: /”). Drukowanie odbywa się wewnątrz funkcji, więc nie możesz nic z tym zrobić. Ale jeśli uruchomisz swoją aplikację na urządzeniu z zainstalowaną aplikacją Facebook, nie zobaczysz tego błędu.Błąd 308 występuje z powodu sytuacji, w której wartość przechowywana w pęku kluczy nie jest równa wartości, która jest przechowywana w parametrach uzupełniania na Facebooku (więcej informacji można sprawdzić
-[FBSDKLoginManager completeAuthentication:expectChallenge:]
).Dzieje się tak, ponieważ Apple zmienił sposób pracy z pękiem kluczy w iOS 10. Aby rozwiązać ten problem, wystarczy przejść do Cele-> Możliwości i włączyć udostępnianie pęku kluczy (umożliwia to dostęp do pęku kluczy dla Twojej aplikacji):
Jeśli używasz platformy Xamarin (przeczytaj ten link, aby uzyskać więcej informacji, dzięki @dynamokaj):
źródło
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
i próbie odbudowania nadal pojawia się ten sam problem. Teraz zdaję sobie sprawę, że błąd, który widzę, jest bardziej podobny do tego stackoverflow.com/questions/39091841/ ...Ten sam problem był w mojej aplikacji, sprawdziłem wiele rozwiązań, ale nie działa. Naprawiłem ten problem za pomocą poniższej metody.
Przejdź do tego łącza Wybierz swoją aplikację i skonfiguruj
info.plist
import
i dodaj ten kod do swojegoAppDelegate
źródło
Głównym powodem, dla którego otrzymujesz następujący błąd,
polega na tym, że Twój symulator iOS nie ma zainstalowanej aplikacji Facebook. Dopóki nie zainstalujesz aplikacji na swoim symulatorze iOS, błąd będzie nadal występował. Spróbuj uruchomić aplikację iOS na obsługiwanym urządzeniu iOS z zainstalowanym Facebookiem, a komunikat o błędzie nie zostanie ponownie wyświetlony. Mam nadzieję że to pomoże!
źródło
W moim przypadku poprawka była *:
* Zgodnie z zaleceniami @MoridinBG na stronie Github Facebook SDK
źródło
Ten błąd może być również spowodowany, jeśli używasz FBSDKCoreKit lub FBSDKLoginKit w wersji 4.39.0. Wystąpił błąd w tej wersji SDK. Zaktualizuj do wersji 4.39.1 lub nowszej, aby to naprawić. Szczegóły tutaj .
Na marginesie, inni użytkownicy wspominali, że ten błąd jest widoczny, jeśli nie masz zainstalowanego Facebooka na symulatorze. To prawda, ale SDK powinien automatycznie wrócić do metody logowania w sieci Web, gdy aplikacja nie jest zainstalowana. Jeśli tak się nie stanie, może to być spowodowane innym problemem, takim jak brakujące / źle skonfigurowane wartości w Info.plist (sprawdź LSApplicationQueriesSchemes) lub brakujące metody w AppDelegate.
źródło
W moim przypadku problemem był Google Analytics. Domyślnie wydaje się, że dodaje własny kontroler widoku na wierzchu kontrolera widoku aplikacji. Ustawienie „FirebaseAppDelegateProxyEnabled” na „NIE” w {Twoja aplikacja} -Info.plist rozwiązało problem.
źródło