Search code examples
javascriptnode.jsgoogle-cloud-platformdialogflow-es

Generate Token to call Dialogflow V2


I need to call a Dialogflow V2 APIs, but to do this i need to generate a token. I found many codes about how to do this, but doesn't work for me.

I'm doing an API to generate token and then pass the token to another API to call DialogFlow APIs.

Can anyone help me how to generate a token to call Dialogflow V2 APIs?

My API to generate token Code below:

const express = require('express');

const router = express.Router();

const googleAuth = require('google-oauth-jwt');

function generateAccessToken() {
        return new Promise((resolve) => {
                googleAuth.authenticate(
                        {
                                email: "<myemail>",
                                key: "<myprivatekey>",
                                scopes: "https://www.googleapis.com/auth2/v4/token",
                        },
                        (err, token) => {
                                resolve(token);
                        },
                );
        });
}

router.get('/token', async(req, res) => {
        try {
                let tok = await generateAccessToken();

                return res.status(200).send({ Token: tok});
        } catch(err) {
                return res.status(500).send({ error: 'Erro ao gerar token'});
        }
});

module.exports = app => app.use('/', router);

Solution

  • Below the code worked for me returning Bearer Token:

    const express = require('express');
    
    const router = express.Router();
    
    const googleAuth = require('google-oauth-jwt');
    const {google} = require('googleapis');
    const request = require('request');
    
    async function generateAccessToken2() {
            const jwtClient = new google.auth.JWT(
                    "<email serviceaccount>",
                    null,
                    "<Private Key>",["https://www.googleapis.com/auth/indexing","https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/dialogflow"],
                    null
            );
            let tok = "";
            tok = jwtClient.authorize();
            return tok;
    };