You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置外部Google Drive程序化访问遇卡点,求指导(Win10无管理员权限)

解决Google Drive程序化访问配置的问题

别担心,这个配置确实容易卡壳,我来一步步帮你捋清楚,尤其是针对无管理员权限的Windows 10环境。

第一步:搞定同意屏幕(Consent Screen)的填写

你卡在这一步太正常了,Google的提示确实有点模糊,尤其是个人非G Suite用户的场景,按下面的逻辑填就行:

  • 应用名称:随便填个辨识度高的名字,比如「我的Drive批量下载工具」,不用和官方名称挂钩,自己能认出来就好。
  • 用户支持邮箱:填你自己的Google账号邮箱即可。
  • 开发者联系信息:同样填你的Google邮箱,这部分是Google用来联系你的,不会展示给其他用户。
  • 范围(Scopes):如果你只是批量下载文件,选../auth/drive.readonly就足够了,别选过高权限,避免后续不必要的审核麻烦。
  • 测试用户:因为你是个人账号(无管理员权限),只能选「外部」类型,一定要把你自己的Google邮箱添加到测试用户列表里——这一步是关键,不然你的应用没法正常使用。
  • 其他选项(比如应用logo、隐私政策链接):如果只是自己用,完全可以留空跳过。

填完这些保存,就能继续下一步创建凭据了。

第二步:更简便的配置方式(适配无管理员权限Win10)

其实不用跟着复杂的指南绕弯路,有个专门针对桌面端批量操作的省心方法:

  1. 打开Google Cloud Console,创建一个新项目(随便命名,比如「Drive批量下载项目」)。
  2. 搜索并启用「Google Drive API」。
  3. 进入「凭据」页面,点击「创建凭据」→「OAuth客户端ID」。
  4. 应用类型选「桌面应用」,名称随便填,然后点击创建。
  5. 下载生成的credentials.json文件,把它放到你的Python项目文件夹里。

接下来用google-api-python-client库实现批量下载,参考代码如下:

from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
import io
import os

# 权限范围,只读权限足够满足下载需求
SCOPES = ['https://www.googleapis.com/auth/drive.readonly']

def main():
    creds = None
    # token.json会自动生成,用来存储你的登录授权信息
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)
    # 没有有效凭据时,触发登录授权流程
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # 保存凭据供下次使用
        with open('token.json', 'w') as token:
            token.write(creds.to_json())

    # 初始化Drive服务
    service = build('drive', 'v3', credentials=creds)

    # 替换成合作方共享给你的文件夹ID
    folder_id = '你的共享文件夹ID'
    # 查询文件夹下的所有文件
    results = service.files().list(
        q=f"'{folder_id}' in parents",
        fields="nextPageToken, files(id, name)").execute()
    items = results.get('files', [])

    if not items:
        print('未找到任何文件。')
    else:
        print('开始批量下载文件:')
        for item in items:
            print(f"正在下载:{item['name']}")
            # 发起下载请求
            request = service.files().get_media(fileId=item['id'])
            fh = io.FileIO(item['name'], 'wb')
            downloader = MediaIoBaseDownload(fh, request)
            done = False
            while done is False:
                status, done = downloader.next_chunk()
                print(f"下载进度:{int(status.progress() * 100)}%")

if __name__ == '__main__':
    main()

针对无管理员权限Win10的注意事项

  • 无需安装任何需要管理员权限的软件,直接用pip安装依赖库:pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
  • 第一次运行代码时,会自动弹出浏览器让你登录授权——因为你之前已经把自己加为测试用户,所以不会出现权限报错。
  • 共享文件夹ID获取方式:打开合作方共享的文件夹,浏览器地址栏中folders/后面的一串字符就是文件夹ID,替换到代码里的folder_id位置即可。
  • 如果只需要下载单个文件,直接把代码中的文件夹查询逻辑替换成指定文件ID的下载请求就行。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:53:14