使用 google api 从 google Drive 获取原始数据

问题描述 投票:0回答:1

我正在尝试使用 googleapis 从我的谷歌驱动器中创建“GET”数据(文件夹名称、ID、类型等)

我正在使用此代码

const fetchGoogleDriveFiles = async () => {
    try {
      const response = await fetch(
        `https://www.googleapis.com/drive/v3/files?q=mimeType='application/vnd.google-apps.folder'&fields=files(id,name,mimeType,parents)`,
        {
          method: "GET", 
          headers: {
            Authorization: `Bearer ${session.accessToken}`,
          },
        }
      ); 
      if (response.ok) {
        const data = await response.json();
        console.log("Google Drive Files:", data.files);
      } else {
        console.error("Error fetching Google Drive files:", response.status);
      }
    } catch (error) {
      console.error("Error fetching Google Drive files:", error);
    }
  };

虽然这段代码确实获取了数据,但是“获取”的数据是我之前使用上传功能上传的数据。我想要并计划做的是,获取驱动器中已存在的所有数据,例如文件夹名称、id、memtype 等

我使用 API 路由进行身份验证等 从“next-auth/next”导入 NextAuth 从“next-auth/providers/google”导入 GoogleProvider

export const authOptions = ({
    providers: [
        GoogleProvider({
            clientId : process.env.GOOGLE_CLIENT_ID ?? "" ,
            clientSecret : process.env.GOOGLE_CLIENT_SECRET ?? "",
            authorization: { 
              params: 
              { 
                scope: "openid email profile https://www.googleapis.com/auth/drive.file" 
                //
              } 
            },
        })
    ],
    callbacks: {
      async jwt({token, user , account} : any){  
        if (account) {
          token.accessToken = account.access_token;
        }
        return token
      },
      async session({ session, token } : any) {
        const newSession = {
          ...session,
          accessToken: token.accessToken,
        }; 
        return newSession;
      },
    }
})
 
const handler = NextAuth(authOptions)
export {handler as GET, handler as POST}

有人可以帮我吗?我似乎不太明白

javascript typescript next.js google-api
1个回答
0
投票

您的

https://www.googleapis.com/auth/drive.file
范围仅检索由同一客户端创建的文件和文件夹。

当您想要实现

get all the data that already exists inside my drive such as folder name, id, memtype etc etc
的目标时,需要更改范围如下。

来自:

https://www.googleapis.com/auth/drive.file

致:

https://www.googleapis.com/auth/drive.metadata.readonly

在此范围内,仅返回所有文件和文件夹的文件元数据。如果您想同时检索文件元数据和文件内容,请使用

https://www.googleapis.com/auth/drive.readonly
。如果您要上传和下载文件内容和文件元数据(包括所有文件和文件夹),请使用
https://www.googleapis.com/auth/drive

注:

  • 作为附加信息,在您的查询参数中,仅返回 100 个文件夹的元数据。 Ref 如果您想检索所有文件和文件夹,请使用
    pageSize
    pageToken
    。请注意这一点。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.