J'ai essayé d'implémenter la connexion Facebook avec un bouton de connexion personnalisé, j'ai complété toutes les étapes de configuration et quand j'appuie sur le bouton, la vue web est présente et demande l'autorisation. Cependant, si j'appuie sur Terminé (en haut à gauche du contrôleur de vue Web), le bloc d'achèvement est appelé mais lorsque j'appuie sur Annuler ou OK, le contrôleur de vue Web est fermé mais le bloc d'achèvement n'est jamais appelé? Voici le code je:Facebook login bloc d'achèvement non appelé
let fbLoginManager = FBSDKLoginManager()
fbLoginManager.loginBehavior = .Native
fbLoginManager.logInWithReadPermissions(["email"], fromViewController: self) { (result, error) in
// put a breakpoint here but it won't stop here if I tap OK
if error != nil {
print(error.localizedFailureReason)
} else if result.isCancelled {
// dismiss view
} else {
let token = result.token.tokenString
// do something with the token
}
}
EDIT 1
Voici la méthode url ouverte AppDelegate:
func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
return application(app, openURL: url, sourceApplication: nil, annotation: [:])
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
if url.scheme == Key.FACEBOOK_URL_SCHEME {
let handled = FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
return handled
}
let dynamicLink = FIRDynamicLinks.dynamicLinks()?.dynamicLinkFromCustomSchemeURL(url)
if let dynamicLink = dynamicLink {
if let url = dynamicLink.url {
if let paths = url.pathComponents{
if paths.count > 2 {
let slug = paths[2]
if let book = AppManager.instance.findBookBySlug(slug) {
// Open detail book
self.openDetailBook(book)
} else {
self.openDetailBookWithSlug(slug)
}
}
}
}
}
if url.scheme == Key.DEEP_LINK_URL_SCHEME {
if let paths = url.pathComponents, host = url.host {
if host == "truyen" {
if paths.count > 1 {
let slug = paths[1]
if let book = AppManager.instance.findBookBySlug(slug) {
// Open detail book
self.openDetailBook(book)
} else {
self.openDetailBookWithSlug(slug)
}
}
}
}
}
return true
}
peut vous envoyer ur méthode url ouverte? –
pls regarder http://stackoverflow.com/questions/32299271/facebook-sdk-login-never-calls-back-my-application-on-ios-9. SVP suivez la réponse suggérée par David. –
vous devez changer l'application de retour (app, openURL: url, sourceApplication: nil, annotation: [:]) dans votre première méthode url ouverte –