Estoy tratando de descargar un archivo de Google Drive usando la cuenta de servicio de Google. Para eso he creado un proyecto, creé una cuenta de servicio y claves. Ahora, cuando intento usar la API de autenticación de Google, vuelve indefinido.
Encuentre el código a continuación.
const scope = ["https://www.googleapis.com/auth/drive"]; const authService = new google.auth.GoogleAuth({ keyFile: "./service.json", scopes: scope, });esto está devolviendo algo como a continuación,
GoogleAuth { checkIsGCE: undefined, jsonContent: null, cachedCredential: null, _cachedProjectId: null, keyFilename: './service.json', scopes: [ 'https://www.googleapis.com/auth/cloud-platform' ], clientOptions: undefined }aunque service.json está en la misma carpeta y copió las credenciales del propio espacio de trabajo.
Por favor hagamelo saber. Gracias
Recuerde que debe compartir el archivo con la cuenta de servicio para que tenga permisos para descargar el archivo.
// service account key file from Google Cloud console. const KEYFILEPATH = 'C:\\ServiceAccountCred.json'; // Request full drive access. const SCOPES = ['https://www.googleapis.com/auth/drive']; // Create a service account initialize with the service account key file and scope needed const auth = new google.auth.GoogleAuth({ keyFile: KEYFILEPATH, scopes: SCOPES }); const driveService = google.drive({version: 'v3', auth}); var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'; var dest = fs.createWriteStream('/tmp/photo.jpg'); driveService.files.get({ fileId: fileId, alt: 'media' }) .on('end', function () { console.log('Done'); }) .on('error', function (err) { console.log('Error during download', err); }) .pipe(dest);Para ver cómo funciona la autorización, consulte Carga de archivos node.js