Tenga en cuenta que siempre puede recuperar el token con:
FirebaseInstanceID.getInstance().getToken();
Esto devolverá null
si el token aún no se ha generado o el token si se ha generado. En su caso, es muy probable que el token se genere cuando el usuario haya iniciado sesión. Por lo tanto, debería poder enviarlo a su servidor de aplicaciones tan pronto como el usuario haya iniciado sesión. Si no está disponible, entonces lo enviaría en la devolución de llamada onTokenRefresh como mencionó Chintan Soni.
Editar
Usando el nuevo SDK de Firebase (21.0.0), obtendrá su token de esta manera:
FirebaseInstallations.getInstance().getToken(false).addOnCompleteListener(new OnCompleteListener<InstallationTokenResult>() {
@Override
public void onComplete(@NonNull Task<InstallationTokenResult> task) {
if(!task.isSuccessful()){
return;
}
// Get new Instance ID token
String token = task.getResult().getToken();
}
});
Será mejor que agregue un oyente para manejar mejor la respuesta.