2017-07-16 1 views
4

Je viens de mettre à jour mes Cocoapods Firebase de 3.15.0 à 4.0.4 et Cocaapods FirebaseAuth de 3.1.1 à 4.0.0. J'utilise le mot de passe & pour authentifier les utilisateurs. Lorsqu'un utilisateur change leur e-mail que j'utilisais cette méthode ci-dessous et tout fonctionnait très bien:Swift3 iOS -Firebase FIREmailPasswordAuthProvider ne fonctionne pas

FIREmailPasswordAuthProviderID.credential(withEmail: emailTextField.text!, password: passwordTextField.text!) 

Maintenant que je mis à jour je reçois le message d'erreur

Value of type 'String' has no member 'credential'

Je regardais le docs et dit utilisez la méthode ci-dessous:

enter image description here

le problème est que je reçois la même erreur exacte:

FIREmailAuthProviderID.credential(withEmail: emailTextField.text!, password: passwordTextField.text!) 

Value of type 'String' has no member 'credential'

Mon code original ci-dessous

import Firebase 
import FirebaseAuth 

let user: User? 

let credential = FIREmailPasswordAuthProviderID.credential(withEmail: emailTextField.text!, password: passwordTextField.text!) 

     if let user = user{ 
      user.reauthenticate(with: credential, completion: { 
       (error) in 
       if error != nil{ 
        //...do something 
        return 
       } 
       //...do something else 
      }) 
     } 

Qu'est-ce que je fais mal?

Répondre

8

Hold up

FIREmailAuthProviderID est une constante qui contient les fournisseurs auth id et est une chaîne (qui est EmailAuthProviderID FB 4). Il n'y a pas de fonction d'identification, c'est pourquoi vous obtenez cette erreur.

Voici un lien vers la Firebase 4 Migration Guide

Le nouveau format (et l'appel de fonction correcte) est

EmailAuthProvider.credential(withEmail email: String, password: String) -> AuthCredential

20171014 Edit: lien mis à jour le dernier guide de migration.

+0

hey merci pour l'aide! J'ai essayé cela hier soir et encore juste maintenant et j'ai eu l'erreur "Utilisation de l'identificateur non résolu 'EmailPasswordAuthProvider' –

+0

@LanceSamaria C'est * EmailAuthProvider * not * EmailPasswordAuthProvider * – Jay

+0

oh shoot Yep c'était ça! Merci !!! –

0

Je ne l'ai pas utilisé cette caractéristique de Firebase mais il semble que ce lien peut être utile

https://firebase.google.com/docs/reference/ios/firebaseauth/api/reference/Classes/FIREmailAuthProvider

+0

merci pour l'aide! J'ai effectivement essayé cette méthode avant de poster la question, mais cela n'a pas fonctionné. Maintenant que j'y pense, c'est la même méthode. Je l'ai juste regardé et c'est une fonction de classe. C'est ce que j'utilise dans mon code dans la question –

+0

Je lisais des documents Firebase et il y a une méthode pour mettre à jour l'email de l'utilisateur – Amber

+0

user.updateEmail (à: "[email protected]") {error in // Check pour l'erreur } – Amber

0

Je pense que vous utilisez les besoins EmailAuthProviderID au lieu de FIREmailAuthProviderID. Dans Firebase 4.0 n'utilise plus le suffixe FIR.

espère que cela vous aider :)

+0

merci pour l'aide: j'ai essayé cela (et une combinaison d'autres choses) mais ça ne marche toujours pas –

+0

Ce n'est pas une bonne réponse mais c'est correct dans le contenu. * EmailAuthProviderID * – Jay