webentwicklung-frage-antwort-db.com.de

Firebase Android-Authentifizierung fehlgeschlagen: expired_token (Authentifizierungstoken ist abgelaufen)

Bei der Verwendung von com.google.gms:google-services:3.0.0 und com.google.firebase:firebase-auth:9.0.1 in Android Firebase Auth ist ein Problem aufgetreten.

1 Stunde nach der Authentifizierung bei Firebase (Google oder Facebook) erhalte ich die folgende Fehlermeldung:

W/PersistentConnection: pc_0 - Authentication failed: expired_token (Auth token is expired)

Warum läuft das Firebase-Token nach 1 Stunde ab und wie verlängert man diesen Ablaufzeitraum?

UPDATE

Ich stoße immer noch auf dieses Problem. Das Firebase-Token läuft nach 1 Stunde ab. Jetzt erhalte ich folgende Meldung: W/PersistentConnection: pc_0 - Authentication failed: invalid_token (Invalid claim 'kid' in auth header.)

Ich freue mich über jede Hilfe.

12
kandroid

Wenn wir standardmäßige Auth-Anbieter wie (Google, Facebook, E-Mail ..) verwenden, würde das Aktualisieren des "SHA-1-Schlüssels" Ihrer Anwendung in der Firebase-Konsole das Token-Ablaufproblem beheben.

In dieser Diskussion hat ein Google-Entwickler einen Leitfaden zur Lösung dieses Problems veröffentlicht.

Leitfaden: https://drive.google.com/file/d/0B94LePkXiqa6SXVFd3N1NzJHX1E/view

3
Karthi R

Versuchen Sie, FirebaseInstanceIdService zu implementieren, um ein Aktualisierungstoken zu erhalten.

Zugriff auf das Registrierungs-Token :

Sie können auf den Wert des Tokens zugreifen, indem Sie FirebaseInstanceIdService erweitern. Stellen Sie sicher, dass Sie den Dienst zu Ihrem Manifest hinzugefügt haben, rufen Sie dann getToken im Kontext von onTokenRefresh auf und protokollieren Sie den Wert wie folgt:

    @Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

    // TODO: Implement this method to send any registration to your app's servers.
    sendRegistrationToServer(refreshedToken);
}

Das onTokenRefreshcallback wird immer dann ausgelöst, wenn ein neues Token generiert wird. Durch Aufrufen von getToken in seinem Kontext wird sichergestellt, dass Sie auf ein aktuelles, verfügbares Registrierungstoken zugreifen . FirebaseInstanceID.getToken() gibt null zurück, wenn das Token noch nicht generiert wurde.

Code:

import Android.util.Log;

import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;


public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseIIDService";

    /**
     * Called if InstanceID token is updated. This may occur if the security of
     * the previous token had been compromised. Note that this is called when the InstanceID token
     * is initially generated so this is where you would retrieve the token.
     */
    // [START refresh_token]
    @Override
    public void onTokenRefresh() {
        // Get updated InstanceID token.
        String refreshedToken = FirebaseInstanceId.getInstance().getToken();
        Log.d(TAG, "Refreshed token: " + refreshedToken);

        // TODO: Implement this method to send any registration to your app's servers.
        sendRegistrationToServer(refreshedToken);
    }
    // [END refresh_token]

    /**
     * Persist token to third-party servers.
     *
     * Modify this method to associate the user's FCM InstanceID token with any server-side account
     * maintained by your application.
     *
     * @param token The new token.
     */
    private void sendRegistrationToServer(String token) {
        // Add custom implementation, as needed.
    }
}

Ich hoffe es hilft dir.

0
pRaNaY

Die neue maximale Lebensdauer von Firebase-Token beträgt 1 Stunde. Ich habe sie heute in den Dokumenten gelesen.

In Bezug auf Ungültiger Anspruch "Kind" im Auth-Header. , ich bekomme dafür genau 2 Suchergebnisse bei Google (: Keine Dokumentation zu kid in Firebase-Dokumenten. Ich denke, wir werden auf Antworten von Google warten müssen (oder auf die alte Version von Firebase umsteigen, falls möglich).

0
Jigar Mehta