0

I am working on Google Cloud Search API to search documents stored in Google Drive. I have Google Workspace account and few documents stored in Google Drive. I am able to search using Google Cloud search console but facing issue using below node.js code for searching using API.

Issue: I am able to generate the access token but get below error for search query:

Error: This project doesn't have Cloud Search's Query API Enabled, and/or the Cloud Search Platform license has not been assigned to the user account calling the Query API

var {google} = require("googleapis");

var serviceAccount  = require('C:/nodejstest/key/serviceAccountKey.json');

// Specify the required scope.
var scopes = [
    "https://www.googleapis.com/auth/cloud_search",
    "https://www.googleapis.com/auth/cloud_search.query"
  ];

var jwtClient = new google.auth.JWT({
  email: serviceAccount.client_email,
  key: serviceAccount.private_key,
  scopes: scopes,
  subject: 'sample@example.com'
});

// Use the JWT client to generate an access token.
jwtClient.authorize(function(error, tokens) {
    if (error) {
      console.log("Error making request to generate access token:", error);
    } else if (tokens.access_token === null) {
      console.log("Provided service account does not have permission to generate access tokens");
    } else {
      var accessToken = tokens.access_token;
      console.log('accessToken= ' + accessToken)
      // Include the access token in the Authorization header.
    }
  });


const service = google.cloudsearch({version: 'v1'});
service.query.search({
    auth: jwtClient,
    requestBody: {
      requestOptions: {
        searchApplicationId: 'searchapplications/default',
        debugOptions:{enableDebugging: true}
      },
      query: 'My query'
    }
  }).then((res) => {
  console.log(JSON.stringify({results:res.results.length}));
  console.log(JSON.stringify({resultsInfo:res.results[0]}));
}).catch((err) => {
  console.error('Unexpected error with cloud search API.');
  console.error(err.toString());
});

In above code I am passing workspace admins email id as subject.

I followed steps mentioned at below link

Satish Gunjal
  • 43
  • 1
  • 11

1 Answers1

0

Go to the google console then select the your project.

Then search for Cloud Search API then enable it.

From gcp console

Also make sure that your service account have access on Cloud Search Indexing API