wake-up-neo.com

"Ungültiges Token", wenn versucht wird, die Telefonnummer mit Firebase zu authentifizieren

Das ist mein 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")
        }
    }

}

So druckt die Konsole aus:

Fehlerdomäne = FIRAuthErrorDomain Code = 17048 "Ungültiges Token." UserInfo = {NSLocalizedDescription = Ungültiges Token., Fehlername = INVALID_APP_CREDENTIAL}

Was mache ich falsch? Vielen Dank

9
Jordan Tate

Ich hatte auch dieses Problem. Folgendes geprüft:

  • Richtige Bündel-ID
  • Google-Info.plist korrigieren
  • Korrigieren Sie den aps-environment-Wert
  • Korrekter APNS-Token-Typ beim Aufruf von auth.setAPNStoken (.unknown für automatische Erkennung)

Nichts hat geholfen, bis ich in den Einstellungen der Firebase-App den APNS-Authentifizierungsschlüssel (p8) anstelle von Zertifikaten hochgeladen habe. Ich habe diese Zertifikate zuvor nur für Push-Benachrichtigungen verwendet, und alles funktionierte einwandfrei.

7
algrid

Erneuert zuerst den APNS-Schlüssel und lädt ihn für das Cloud-Messaging in die Firebase 

1) Importieren Sie Firebase und FirebaseAuth

import Firebase
import FirebaseAuth

2) In didFinishLaunchingWithOptions Konfigurieren Sie die Firebase.

FirebaseApp.configure()

3) Schreiben Sie diese beiden Funktionen in 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
    }
}

Sehr wichtiger Hinweis: uthAPNSTokenType muss korrekt für [Sandbox/Produktion] oder für allgemeinen .unknown eingestellt sein.

In meinem Fall war es der Apns-Tokentyp, der falsch war:

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

gewesen sein sollte:

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

die gleichen Problemfragen wurden zuvor auf SO gestellt. Ich möchte Ihnen also mitteilen, dass Sie alle erforderlichen Schritte vor dem Ausführen des Codes einrichten müssen.

Pre-Require-Schritte: 

  • Registrieren Sie die Bundle-ID im Developer-Konto und aktivieren Sie die Benachrichtigungen für die Bundle-ID.

  • Registrieren Sie dieselbe Bundle-ID auf der Firebase-Konsolen-Einstellungsseite und erstellen Sie sieapp, laden Sie die Google-Info.plist-Datei herunter, und stellen Sie sicher, dass der Name gleich ist.

  • Laden Sie Push-Zertifikate auf der Firebase-Konsole für die Sandbox sowie die Entwicklung von Hoch.

  • folgen Sie diesem Link zur Code-Implementierung.

Setup-Code für Firebase Auth

1
Parth

Stellen Sie sicher, dass es sich um APNs handelt, die Sie unter Schlüsseldienste ausgewählt haben. Die Anzahl der APNs-Zertifikate pro Entwicklerkonto ist auf 2 begrenzt. Wenn Sie also bereits 2 Zertifikate hatten, besteht die Möglichkeit, dass Sie das Zertifikat durch Aktivieren von DeviceCheck anstelle von APNs erstellen.

enter image description here

0
Naval Hasan

Es ist sehr wahrscheinlich, dass Sie eine .p8-Schlüsseldatei Hochladen müssen (ich habe ein Unternehmenskonto, aber für Entwickler dasselbe).
Im Apple Developer Account:

  • Alle Schlüssel
  • Neuen Schlüssel erstellen (+)
  • Geben Sie den globalen Namen für alle Ihre Apps ein 
  • Kontrollkästchen neben dem Apple Push-Benachrichtigungsdienst (APNs)
  • Laden Sie Ihre P8-Datei herunter
  • Laden Sie das Firebase-Dashboard hoch
0
Jayb967