2

Ich habe eine iOS Firebase-App, die Twitter-Login unterstützt, aber gelegentlich der signIn(with: credential Anruf nach dem Zufallsprinzip schlägt fehl und ich kann nicht herausfinden, warum.iOS-Fehler mit Firebase Auth Anmelden mit Twitter-Anmeldeinformationen

Zuerst meldet sich der Benutzer bei Twitter an (was nie fehlschlägt), dann verwende ich die Twitter-Sitzung, um die Anmeldeinformationen abzurufen, und dann verwende ich diese Anmeldeinformationen mit Firebase, die manchmal fehlschlägt.

Hier ist der vollständige Code

func twitterLogin(_ done:@escaping (_ user: FIRUser?, _ err: Error?) -> Void) { 
    Twitter.sharedInstance().logIn() { session, error in 
     guard error == nil else { 
      done(nil, error) 
      return 
     } 

     let credential = FIRTwitterAuthProvider.credential(withToken: session!.authToken, secret: session!.authTokenSecret) 
     FIRAuth.auth()?.signIn(with: credential, completion: { (signUser, error) in 
      //User is signed in 

      // ERROR OCCURS HERE. ANY HELP WOULD BE GREATLY APPRECIATED 

      done(signUser, error) 
     }) 
    } 
} 

Hier ist die genaue Fehlermeldung erhalte ich.

UserInfo={NSUnderlyingError=0x600000442c10 {Error Domain=FIRAuthInternalErrorDomain Code=3 "(null)" UserInfo={FIRAuthErrorUserInfoDeserializedResponseKey={ 
code = 400; 
errors =  (
      { 
     domain = global; 
     message = "Network error while to fetch VERIFY_CREDENTIAL from TWITTER."; 
     reason = invalid; 
    } 
); 
message = "Network error while to fetch VERIFY_CREDENTIAL from TWITTER."; 
}}}, error_name=ERROR_INTERNAL_ERROR, NSLocalizedDescription=An internal error has occurred, print and inspect the error details for more information.}) 

Ich habe versucht, für die Fehlermeldung speziell zur Suche ich bekommen „Netzwerkfehler während VERIFY_CREDENTIAL von TWITTER zu holen.“ aber ich kann keine Lösung finden. Ich fand einige Beiträge, von denen ich glaube, dass sie auf Japanisch waren, aber ich konnte ihre Lösung nicht verstehen.

+0

Ich bekomme den gleichen Fehler mit Firebase für das Web: "Netzwerkfehler beim Abrufen von VERIFY_CREDENTIAL von TWITTER." Es passiert auch nur "gelegentlich" und scheinbar für einige Twitter-Nutzer mehr als andere. Ich habe sogar versucht, meine eigene Auth-Backend-Funktion zu implementieren, um das Authentifizierungs-Token und das Geheimnis direkt von Twitter zu erhalten, indem ich sie wie folgt anmelde: 'var credential = firebase.auth.TwitterAuthProvider.credential (Token, Secret); firebase.auth(). signInWithCredential (credential); 'aber es hat nicht geholfen. – pejalo

+0

Gleiches gilt für Firebase seit mindestens 2 Monaten. Firebase sagt, dass es nicht sie sind. Twitter antwortet nicht. Andere vorhandene Apps, die Twitter Auth mit Firebase verwenden, funktionieren normal. In der Zwischenzeit, als eine wackelige, aber nur Umgehungsmöglichkeit, implementiere ich eine 3-Wiederholungs-Logik mit einiger Zeitverzögerung. Sogar damit wird es in etwa 50% der Zeit gelöscht ... – SteveSeow

Antwort

0

Ich sehe den gleichen Fehler

ich auch bei Firebases iOS Auth Fehler hier gesucht signInWithCredential:completion: https://firebase.google.com/docs/auth/ios/errors aber der Fehler Schlüssel FIRAuthErrorUserInfoDeserializedResponseKey ist nicht einmal als mögliche Fehler aufgelistet. Beispiel bei codepen:

https://codepen.io/mosse/pen/KmGMap

<button class="login">login</button> 
 

 
<script src="https://www.gstatic.com/firebasejs/4.0.0/firebase.js"></script> 
 
<script> 
 
    var config = { 
 
    apiKey: "AIzaSyDfJ5KuDofcZpahzl4H3XTl4f6R65gUyrQ", 
 
    authDomain: "authtest-3a944.firebaseapp.com", 
 
    projectId: "authtest-3a944", 
 
    }; 
 
    firebase.initializeApp(config); 
 
</script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script> 
 
$(document).ready(function(){ 
 
    $(".login").click(function(){ 
 
     var providerObj = new firebase.auth.TwitterAuthProvider(); 
 
     firebase.auth().signInWithPopup(providerObj) 
 
     \t .then(result => { 
 
     \t \t console.log('success') 
 
     \t \t console.log(result.user) 
 
     \t }) 
 
     \t .catch(err => { 
 
     \t console.log('failure') 
 
     \t console.log(err.message) 
 
     }) 
 
    }); 
 
}); 
 
</script>

Firebase Unterstützung vorschlagen die Ursache ist auf einen unzuverlässigen Twitter Endpunkt, haben aber keine Lösung vorgeschlagen.

Ein älteres Projekt, das Firebase 2.3.2 verwendet, repliziert den Fehler nicht, was darauf hindeutet, dass es eine Firebase-Lösung für mich geben sollte.

+0

Sieht so aus, als wäre dies von Twitter behoben worden. Wer sieht den Fehler noch? – mosse