You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在C#中无需凭据访问Google Drive公开共享内容

不用OAuth凭据列出公开共享的Google Drive内容

嗨,你说得太对了!公开共享的Google Drive资源确实不需要用户凭据(UserCredential)就能访问,咱们可以用Google Drive API的API密钥模式来实现,步骤其实很简单,我给你一步步拆解:

第一步:启用Drive API并创建API密钥

虽然是访问公开资源,但还是得先在Google Cloud Console里完成基础配置:

  • 打开Google Cloud Console,新建一个项目(或者用你已有的项目)
  • 在搜索框搜「Google Drive API」,找到后点击「启用」
  • 启用后进入「凭据」页面,点击「创建凭据」→「API密钥」
  • 生成密钥后,记得给它加个使用限制(比如只允许调用Drive API),避免被滥用

第二步:获取公开资源的ID

不管是文件夹还是文件,从共享链接里就能轻松拿到ID:

  • 文件夹共享链接格式:https://drive.google.com/drive/folders/[FOLDER_ID][FOLDER_ID]就是你要访问的文件夹ID
  • 文件共享链接格式:https://drive.google.com/file/d/[FILE_ID]/view[FILE_ID]就是文件ID

第三步:编写代码示例(以Python为例)

我用最常用的google-api-python-client库写个示例,先安装依赖:

pip install google-api-python-client

核心代码能列出指定公开文件夹下的所有文件和子文件夹:

from googleapiclient.discovery import build

# 替换成你自己的API密钥
API_KEY = "你的API密钥"
# 替换成你要访问的公开文件夹ID
FOLDER_ID = "公开文件夹ID"

def list_public_drive_contents():
    # 用API密钥初始化Drive服务(不用OAuth凭据!)
    service = build('drive', 'v3', developerKey=API_KEY)
    
    # 调用Drive API列出文件夹下的内容
    results = service.files().list(
        q=f"'{FOLDER_ID}' in parents",
        fields="files(id, name, mimeType)",
        pageSize=100  # 可根据需求调整返回数量
    ).execute()
    
    items = results.get('files', [])
    
    if not items:
        print("这个文件夹里没有内容哦")
    else:
        print("文件夹内容:")
        for item in items:
            # 区分文件夹和文件
            item_type = "文件夹" if item['mimeType'] == 'application/vnd.google-apps.folder' else "文件"
            print(f"- {item['name']} ({item_type}) | ID: {item['id']}")

if __name__ == "__main__":
    list_public_drive_contents()

关键注意点

  • 必须确保你的共享资源设置是「知道链接的任何人都能查看」,如果是仅限特定用户的共享,这个方法就失效了
  • API密钥别随便泄露,哪怕加了限制,也尽量只在自己的代码里用
  • Drive API有免费配额,个人日常使用完全足够,但如果调用量极大,可能需要申请提升配额

内容的提问来源于stack exchange,提问作者Tak

火山引擎 最新活动