2

我正在使用节点 Google Auth Library 来获取授权客户端。console.log('Project ID', await auth.getProjectId())从打印正确结果的行我知道这一步是成功的。当我尝试使用此授权客户端对 Google Drive api 进行身份验证时出现错误:

Error: invalid_scope: Invalid OAuth scope or ID token audience provided.

代码:

import { google } from 'googleapis'
const { GoogleAuth } = require('google-auth-library')
import { config } from 'dotenv'
import { resolve } from 'path'

/**
 * GCLOUD_PROJECT and GOOGLE_APPLICATION_CREDENTIALS are set
 * in the top-level .env file, GoogleAuth requires these to be set
 */
config({ path: resolve(__dirname, '../.env')})

const main = async () => {
    const csv = ''
    const auth = await getAuthClient()
    await uploadToGoogleDrive({ csv, auth })
}

const getAuthClient = async () => {
    const scopes = ['https://www.googleapis.com/auth.drive']
    const auth = new GoogleAuth({ scopes })
    console.log('Project ID', await auth.getProjectId())
    return await auth.getClient()
}

const uploadToGoogleDrive = async ({ csv, auth }) => {
    const drive = google.drive({
        version: 'v3',
        auth,
    })

    await drive.files.create({
        requestBody: {
            name: 'test.csv',
            mimeType: 'text/plain',
            parents: ['** Parent Folder Name **']
        },
        media: {
            mimeType: 'text/csv',
            body: csv
        }
    })
}

main().catch(console.error)
4

0 回答 0