Estou tentando usar o Xcode 8 para construir um aplicativo com login do Facebook usando Swift 3. Quando eu mudo de volta para o iOS Simulator 9.3, ele funciona. No iOS 10, recebo este erro:
""fbauth2:/" The operation couldn’t be completed. (OSStatus error -10814.)"
e
Optional(Error Domain=com.facebook.sdk.login Code=308 "(null)")
Alguém tem solução para isso?
Nota 1 :
Após a depuração, este problema é FBSDK não pode atualizar expect_challange
. Função SecItemUpdate
dentro security.framework
não funciona. Este é um problema do IOS 10
ios
swift
facebook-ios-sdk
ios10
trquoccuong
fonte
fonte
Respostas:
O erro OSStatus -10814 ocorre quando
canOpenURL:
não é possível encontrar nenhum aplicativo que possa abrir este URL (na verdade, o Facebook tentando encontrar seu aplicativo chamandocanOpenURL:
com o argumento "fbauth2: /"). A impressão acontece dentro da função, então você não pode fazer nada com isso. Mas se você for executar seu aplicativo no dispositivo com o aplicativo do Facebook instalado, não verá esse erro.O erro 308 ocorre devido à situação, quando o valor armazenado no keychain não é igual ao valor, que fica armazenado nos parâmetros de preenchimento do Facebook (para mais informações você pode verificar
-[FBSDKLoginManager completeAuthentication:expectChallenge:]
).Isso acontece porque a Apple mudou a maneira de trabalhar com as chaves no iOS 10. Para corrigir esse problema, você simplesmente deve ir para Destinos-> Recursos e habilitar o compartilhamento das chaves (permite o acesso às chaves para o seu aplicativo):
Se você estiver usando o Xamarin (leia este link para obter mais informações, obrigado @dynamokaj):
fonte
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
e tentar reconstruir, ainda obtendo o mesmo problema. Estou percebendo agora que o erro que estou vendo é mais semelhante a este stackoverflow.com/questions/39091841/…O mesmo problema estava no meu aplicativo, verifiquei várias soluções, mas não funcionou para mim. Eu resolvi esse problema usando o método abaixo.
Vá para este link Selecione seu aplicativo e configure seu
info.plist
import
e adicione este código em seuAppDelegate
fonte
O principal motivo pelo qual você está recebendo o seguinte erro,
é que seu simulador iOS não tem o aplicativo do Facebook instalado. Até instalar o aplicativo em seu simulador iOS, você continuará a obter o erro. Tente executar seu aplicativo iOS em um dispositivo iOS provisionado com o Facebook instalado e você não verá a mensagem de erro novamente. Espero que isto ajude!
fonte
No meu caso, a solução foi *:
* Conforme recomendado por @MoridinBG na página Github do Facebook SDK
fonte
Este erro também pode ser causado se você estiver usando FBSDKCoreKit ou FBSDKLoginKit versão 4.39.0. Houve um bug nesta versão do SDK. Atualize para 4.39.1 ou superior para corrigi-lo. Detalhes aqui .
Como nota lateral, outros usuários mencionaram que esse erro é visto se você não tem o Facebook instalado no simulador. Isso é verdade, mas o SDK deve retornar automaticamente ao método de login da Web quando o aplicativo não estiver instalado. Se isso não acontecer, pode ser causado por outro problema, como valores ausentes / configurados incorretamente em seu Info.plist (verifique LSApplicationQueriesSchemes) ou métodos ausentes em seu AppDelegate.
fonte
No meu caso, o problema era o Google Analytics. Por padrão, parece que ele está adicionando seu próprio controlador de visualização no topo do controlador de visualização do aplicativo. Definir "FirebaseAppDelegateProxyEnabled" como "NÃO" em {Seu aplicativo} -Info.plist resolveu o problema.
fonte