web-dev-qa-db-fra.com

Utilisation de l'identifiant non résolu 'FIRAuth' (Swift 2, Firebase 3.x)

Mise à jour vers la nouvelle base de feu. Création d'une nouvelle connexion VC et tout fonctionnait correctement, sans erreur.

Essayer de reproduire ce nouveau didacticiel: https://codelabs.developers.google.com/codelabs/firebase-ios-Swift/index.html?index=..%2F..%2Findex#0

Maintenant, tout à coup, je reçois le message d'erreur. Utilisation de l'identificateur non résolu 'FIRAuth' sur mon VC. 

J'ai essayé de réinstaller le fichier de pods et je n'ai pas eu de chance. Il semble que parfois, si vous ajoutez "import Firebase", puis supprimez-le, l'application compilée, il semble qu'il n'y ait pas de rime ou de raison pour laquelle cela fonctionne parfois. et d'autres fois ce n'est pas le cas:

Voici mon code: 

import UIKit
import FirebaseAuth


class SignInViewController: UIViewController {

@IBOutlet weak var emailField: UITextField!

@IBOutlet weak var passwordField: UITextField!

override func viewDidAppear(animated: Bool) {
    if let user = FIRAuth.auth()?.currentUser { //error here 
        self.signedIn(user)
    }
}

@IBAction func didTapSignIn(sender: AnyObject) {
    // Sign In with credentials.
    let email = emailField.text
    let password = passwordField.text
    FIRAuth.auth()?.signInWithEmail(email!, password: password!) { //error here (user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.signedIn(user!)
    }
}
@IBAction func didTapSignUp(sender: AnyObject) {
    let email = emailField.text
    let password = passwordField.text
    FIRAuth.auth()?.createUserWithEmail(email!, password: password!) { // error here(user, error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.setDisplayName(user!)
    }
}

func setDisplayName(user: FIRUser) {
    let changeRequest = user.profileChangeRequest()
    changeRequest.displayName = user.email!.componentsSeparatedByString("@")[0]
    changeRequest.commitChangesWithCompletion(){ (error) in
        if let error = error {
            print(error.localizedDescription)
            return
        }
        self.signedIn(FIRAuth.auth()?.currentUser) //error here
    }
}

@IBAction func didRequestPasswordReset(sender: AnyObject) {
    let Prompt = UIAlertController.init(title: nil, message: "Email:", preferredStyle: UIAlertControllerStyle.Alert)
    let okAction = UIAlertAction.init(title: "OK", style: UIAlertActionStyle.Default) { (action) in
        let userInput = Prompt.textFields![0].text
        if (userInput!.isEmpty) {
            return
        }
        FIRAuth.auth()?.sendPasswordResetWithEmail(userInput!) { //error here (error) in
            if let error = error {
                print(error.localizedDescription)
                return
            }
        }
    }
    Prompt.addTextFieldWithConfigurationHandler(nil)
    Prompt.addAction(okAction)
    presentViewController(Prompt, animated: true, completion: nil);
}

func signedIn(user: FIRUser?) {
    MeasurementHelper.sendLoginEvent()

    AppState.sharedInstance.displayName = user?.displayName ?? user?.email
    AppState.sharedInstance.photoUrl = user?.photoURL
    AppState.sharedInstance.signedIn = true
    NSNotificationCenter.defaultCenter().postNotificationName(Constants.NotificationKeys.SignedIn, object: nil, userInfo: nil)
   // performSegueWithIdentifier(Constants.Segues.SignInToFp, sender: nil)
}

}

Quelqu'un at-il une idée de la raison pour laquelle cela se produirait? 

21
ryanbilak

J'ai mis à jour Cocoapods et lancé une mise à jour de pod, ce qui a résolu tous mes problèmes.

7
ryanbilak

Pour les futurs lecteurs:

Assurez-vous d’inclure les éléments suivants dans votre Podfile:

pod 'Firebase/Auth'

Après avoir installé les modules, utilisez:

import FirebaseAuth

C'est ce qui l'a résolu pour moi.

50
aashah7

Mis à jour le 26/12/2016 avec Swift 3 et Firebase 3.11.0
Ajouter à Podfile

pod 'Firebase/Auth'

À votre place, vous devez utiliser Auth, juste 

import Firebase

Nettoyer et reconstruire, vous effacerez l'erreur. 

Cette solution provient de Google . https://firebase.google.com/docs/auth/ios/password-auth

5
nynohu

Vous devez ajouter un pod 'Firebase/Auth' sur un fichier pod, importer Firebase et FirebaseAuth dans votre contrôleur. Désormais, utiliser Auth n'est pas FIRAuth.auth(), est Auth.auth().signInAnonymously et tout va bien.

Ajouter "import Firebase" et appuyez sur cmd + b 

3
Rodrigo Fuscaldi

Lorsque j'utilise Firebase dans un UIViewController, je m'assure d'importer Firebase, puis de nettoyer le cache/la compilation (cmd + shift + k), puis de la construire (cmd + b). 

Cela semble fonctionner, mais je dois refaire le processus à chaque fois que je construis. 

MODIFIER 

Si cela ne fonctionne pas le premier nettoyage, continuez jusqu'à ce que cela fonctionne. Pas la solution parfaite mais ça marche. 

2
nullforlife

nous devons d'abord ajouter pod de firebase Auth dans podfile

pod 'Firebase/Auth'

Ensuite, nous devons exécuter le terminal avec ' pod install '

Selon le firebase Doc, nous devons ajouterimport firebasesur notre contrôleur de vue .mais cela ne résoudra pas votre problème. Vous devrez ajouterimport FirebaseAuth. Cela supprimera l'erreur.

2
Sandu

Supprimer cette importation:

importer FirebaseAuth

Ajoutez cette déclaration à la place. Cela a fonctionné pour moi. 

importer Firebase

1
user1457303

Maintenant, il a été renommé de "FIRAuth" à "Auth"

1
Raj0689

Solution maintenant, dans Swift 4.2, où il se plaint simplement "Auth" et non pas "FIRAuth" en disant "Utilisation de l'identifiant non résolu Auth":

Notez qu'il existe deux importations distinctes. import Firebase et import FirebaseAuth

La première suffisait la plupart du temps, mais parfois le compilateur était confus et l'ajout de la seconde version permettait de clarifier les choses.

0
snakeoil

C'est ça ressemble à c'est maintenant juste "Auth" et non pas "FIRAuth"

0
Levi Lais