2

Je crée une application de chat et utilise l'autorisation téléphonique firebase et l'API de chat quickblox.Le jeton d'accès Firebase expire dans 4 à 5 heures

Mon code est:

private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) { 
    mAuth.signInWithCredential(credential) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 

       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        if (task.isSuccessful()) { 
         // Sign in success, update UI with the signed-in user's information 
         Log.d("test", "signInWithCredential:success"); 
         FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser(); 

         mUser.getToken(false).addOnCompleteListener(new OnCompleteListener<GetTokenResult>() { 
          @Override 
          public void onComplete(@NonNull Task<GetTokenResult> task) { 
           if(task.isSuccessful()){ 
            String m=task.getResult().getToken(); 
            signIn(m); 
           } 
          } 
         }); 


public void signIn(String token){ 
     QBUsers.signInUsingFirebase(projectId, token).performAsync(new QBEntityCallback<QBUser>() { 
     @Override 
     public void onSuccess(QBUser user, Bundle args) { 

      messenger.com.nowchat.helper.DataHolder.getInstance().setSignInQbUser(user); 
      Intent intent = new Intent(Registration.this, WelcomeProfile.class); 
      startActivity(intent); 
      finish(); 
     } 
} 

Mais le problème est que mon jeton expire au bout de 4 à 5 heures. Lorsque j'efface le cache ou réinstalle l'application, cela fonctionne à nouveau pendant 5 heures.

+0

Il est correct qu'il expire. Quels problèmes avez-vous avec cela? Vous devez renouveler chaque application de démarrage ou –

Répondre

2

Vous pouvez utiliser QBSessionListener pour écouter les états de QBSession. Donc, dans callback onProviderSessionExpired (fournisseur de chaîne), vous pouvez obtenir le jeton firebase actuel et renouveler QBSession. Dans le code, il ressemblera à ceci:

@Override 
public void onProviderSessionExpired(String provider) { 
    if (!QBProvider.FIREBASE_PHONE.equals(provider)){ 
     return; 
    } 

    final String projectId = "your.project.id"; 

    FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser(); 
     mUser.getToken(true) 
       .addOnCompleteListener(new OnCompleteListener<GetTokenResult>() { 
        public void onComplete(@NonNull Task<GetTokenResult> task) { 
         if (task.isSuccessful()) { 
          String authToken = task.getResult().getToken(); 
          QBUsers.signInUsingFirebase(projectId, authToken).performAsync(new QBEntityCallback<QBUser>() { 
           @Override 
           public void onSuccess(QBUser qbUser, Bundle bundle) { 
            qbUser.setPassword(QBSessionManager.getInstance().getToken()); 
            QBChatService.getInstance().login(qbUser, new QBEntityCallback() { 
             @Override 
             public void onSuccess(Object o, Bundle bundle) { 
              //your actions after success login to the chat 
             } 

             @Override 
             public void onError(QBResponseException e) { 

             } 
            }); 
           } 

           @Override 
           public void onError(QBResponseException e) { 

           } 
          }); 
         } else { 
          // Handle error -> task.getException(); 
         } 
        } 
       }); 
} 
+0

Merci .... une chose de plus lorsque logintochat pour la première fois il fonctionne correctement, mais après quelques heures, il montre l'erreur que l'authentification a échoué l'utilisateur ou le mot de passe est faux ... eh bien je suis en utilisant le jeton qbsession comme mot de passe ... je sais que le jeton qbsession expire également après quelques heures ... donc ma question le rappellera fire sur l'obsession token expire –

+0

@premjangir J'ai mis à jour ma réponse pour montrer comment se connecter au chat après avoir renouvelé QBsession –

+0

J'ai aussi écrit le même code mais après quelques heures le jeton qbsession expire ... et seulement le login déclenche une erreur ..... comment gérer cela –