React native firebase cloud messaging token

I would like to add push notifications to my react native App but I would need some clarifications as there are plenty of different informations and implementations all over the web on that subject.

Currently my App is communicating with a node.js backend. So I have used the Firebase Web SDK in order to send push notifications to app clients.

Now it's time to register the app clients to Firebase Cloud Messaging in order to get tokens and save them with user related data. Then to be able to send targeted notifications to specific users (node.js backend role).

I've read to use the react native firebase library and more especially the messaging module to accomplish that.

Following that Device registration token tutorial, it's pretty clear. But where is the best place to request a token ? I assume that it should be when the user logs in to the App but we are not sure to get the token on time...

With that code we retrieve an existing token:

 .then(fcmToken => {
   if (fcmToken) {
      // user has a device token
   } else {
      // user doesn't have a device token yet

Tell me if I'm right: I understand that if the app instance has already a token, I'll get it and it's time to associated it with user related data in database. But if it doesn't, I need to listen for a new token using that :

componentDidMount() {
    this.onTokenRefreshListener = 
    firebase.messaging().onTokenRefresh(fcmToken => {
        // Process your token as required

componentWillUnmount() {

But where should I start listening for it ? On the login component ? If the user log in before getting the token and navigate to another component, so the login component will be unmounted. It will be still listening ? And then I need to update the user data with the token ?

Or simply when the user log in, I need to wait till getting the token before navigate to another component ?