web-dev-qa-db-fra.com

"Jeton non valide" lors de la tentative d'authentification du numéro de téléphone à l'aide de Firebase

Ceci est mon code:

import FirebaseAuth


class AuthPhoneNum {

    static func getPhoneNum(phoneNumber: String) {
        PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber) { (verificationID, error) in
            if let error = error {
                print(error)
                return
            }
            UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
        }
    }

    static func verify(verificationCode: String?) {
        guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else { return }
        if verificationCode != nil {
            let credential = PhoneAuthProvider.provider().credential(
                withVerificationID: verificationID,
                verificationCode: verificationCode!)

            Auth.auth().signIn(with: credential) { (user, error) in
                if let error = error {
                    print(error)
                    return
                }
            }
        } else {
            print("No verification code")
        }
    }

}

Voici ce que la console affiche:

Domaine d'erreur = Code FIRAuthErrorDomain = 17048 "Jeton incorrect." UserInfo = {NSLocalizedDescription = Jeton invalide., nom_erreur = INVALID_APP_CREDENTIAL}

Qu'est-ce que je fais mal? Merci

9
Jordan Tate

Je rencontrais aussi ce problème. Vérifié ce qui suit:

  • Identifiant de paquet correct
  • Corrigez Google-Info.plist
  • Valeur correcte aps-environment
  • Corrigez le type de jeton APNS lors de l'appel auth.setAPNStoken (.unknown pour la détection automatique)

Rien ne m'a aidé jusqu'à ce que, dans les paramètres de l'application Firebase, je _ {j'ai chargé la clé d'authentification APNS (p8) au lieu de certificats} - j’avais déjà utilisé ces certificats pour les notifications Push et que tout fonctionnait bien, mais que les notifications de numéro de téléphone se passaient mal.

7
algrid

Régénère d’abord la clé APNS et l’envoie dans Firebase pour la messagerie en nuage 

1) Importer Firebase et FirebaseAuth

import Firebase
import FirebaseAuth

2) Dans didFinishLaunchingWithOptions Configurez firebase.

FirebaseApp.configure()

3) Écrivez ces deux fonctions dans AppDelegate.

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let firebaseAuth = Auth.auth()
    firebaseAuth.setAPNSToken(deviceToken, type: AuthAPNSTokenType.prod)

}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    let firebaseAuth = Auth.auth()
    if (firebaseAuth.canHandleNotification(userInfo)){
        print(userInfo)
        return
    }
}

Remarque très importante: uthAPNSTokenType défini correctement pour [sandbox/production] ou défini pour .unknown commun

Dans mon cas, c'était le type de jeton apns qui était incorrect:

Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.prod)

aurait du être:

Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.sandbox)
2
Arun Kumar P

les mêmes problèmes ont déjà été posés sur SO. aimerait donc vous dire de configurer toutes les étapes préalables au code d’exécution.

Étapes préalables: 

  • Enregistrez l'ID de l'ensemble sur le compte développeur et activez les notifications pour l'ID de l'ensemble

  • Enregistrez le même identifiant de paquet sur la page de paramétrage de la console Firebase et créezapp, téléchargez le fichier Google-Info.plist et assurez-vous que le nom est identique.

  • Téléchargez les certificats Push sur la console Firebase pour le bac à sable et le développement

  • suivez ce lien ci-dessous pour l'implémentation du code.

code d'installation pour Firebase Auth

1
Parth

Il est fort probable que vous ayez besoin de télécharger un fichier de clé .p8 (J'ai un compte d'entreprise mais la même chose pour le développeur)
Dans le compte développeur Apple:

  • Toutes les clés
  • Créer une nouvelle clé (+)
  • Tapez Nom global pour toutes vos applications. 
  • Case à cocher en regard du service de notifications Apple Push (APN)
  • Téléchargez votre fichier p8
  • Télécharger dans le tableau de bord firebase
0
Jayb967