未创建驱动器文件夹

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

所以我尝试使用 python 在谷歌驱动器上创建一个文件夹。我遵循了文档和所有内容,还使用了 0Auth2 身份验证。作为参考,这是我正在尝试调试的代码

import os
import google.auth
from googleapiclient.discovery import build
from google.oauth2 import service_account
from googleapiclient.http import MediaFileUpload
from googleapiclient.errors import HttpError

SCOPES = ['https://www.googleapis.com/auth/drive']
SERVICE_ACCOUNT_FILE = 'assets/key/key.json'

def Authenticate():
    creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
    print('Authentication Successful')
    return creds

def CreateFolder():
    creds = Authenticate();
    
    try:
        service = build("drive", "v3", credentials=creds);
    
        folder_metadata = {
            "name" : "AutoUpload",
            "mimeType": "application/vnd.google-apps.folder",
        }
        folder = service.files().create(body=folder_metadata, fields="id").execute()
        print(f'Folder created successfully! Folder ID: "{folder.get("id")}".')
        return folder.get("id")
    
    except HttpError as error:
        print(f'An error occured: {error}')
        return None
CreateFolder();

在调试过程中,我得到了预期的结果,例如身份验证成功,甚至取回了文件夹 ID。但在检查我的驱动器后,找不到该文件夹。即使我直接在驱动器上搜索该文件夹,它似乎也不在那里。我可以就可能出现的问题寻求一些帮助吗

python google-drive-api google-api-python-client service-accounts
1个回答
0
投票

您正在设置的元数据

folder_metadata = {
        "name" : "AutoUpload",
        "mimeType": "application/vnd.google-apps.folder",
    }

显示您正在创建一个文件夹并为其指定 mime 类型的文件夹。您没有设置目录,因此它将进入当前经过身份验证的用户的根目录。

当您使用服务帐户时

creds = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)

该文件将上传到服务帐户谷歌驱动器帐户。

您可以通过执行 files.list 来看到这一点

folder = service.files().list().execute()

如果您想将文件上传到您的个人云端硬盘帐户,您需要与服务帐户共享一个文件夹,然后将元数据中的父级设置为您帐户上上传到的文件夹的父级。

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