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

使用Google Drive Java API上传JPG时遇权限范围不足错误

Google Drive Java API 上传文件403权限不足问题修复

问题根源

  1. 权限范围缺失:主类仅申请了Drive Activity API的只读权限,未包含文件上传所需的Drive API权限。
  2. 认证上下文不一致:上传类独立使用默认凭据(Application Default Credentials),没有复用主类已完成的用户OAuth授权流程,导致权限不匹配。
  3. 旧令牌缓存:之前生成的只读令牌未清除,修改权限后仍会被复用。

修复步骤

1. 更新权限范围

在DriveActivityQuickstart类中修改SCOPES,添加文件上传的最小必要权限:

private static final List<String> SCOPES = Arrays.asList(
        DriveActivityScopes.DRIVE_ACTIVITY_READONLY,
        DriveScopes.DRIVE_FILE // 新增文件上传/修改权限
);

2. 统一认证流程,复用OAuth凭据

修改上传类,直接使用主类已授权的凭据,避免重复认证:

  • 调整UploadBasic的uploadBasic方法,接受Credential参数:
public static String uploadBasic(Credential credential) throws IOException {
    // 复用主类的HTTP传输和JSON工厂,使用传入的已授权凭据构建Drive服务
    Drive service = new Drive.Builder(
            DriveActivityQuickstart.HTTP_TRANSPORT,
            DriveActivityQuickstart.JSON_FACTORY,
            credential)
            .setApplicationName("Drive samples")
            .build();

    File fileMetadata = new File();
    fileMetadata.setName("photo.jpg");
    java.io.File filePath = new java.io.File("files/photo.jpg");
    FileContent mediaContent = new FileContent("image/jpeg", filePath);

    try {
        System.out.println("TESTING THIS LINE");
        File file = service.files().create(fileMetadata, mediaContent)
                .setFields("id")
                .execute();
        System.out.println("File ID: " + file.getId());
        return file.getId();
    } catch (GoogleJsonResponseException e) {
        System.err.println("Unable to upload file: " + e.getDetails());
        throw e;
    }
}
  • 在主类main方法中,传递已授权的凭据给上传方法:
public static void main(String[] args) throws IOException {
    Credential credential = authorize();
    com.google.api.services.driveactivity.v2.DriveActivity service = getDriveActivityService();

    // 打印Drive活动的逻辑保持不变...

    // 调用上传方法并传入凭据
    UploadBasic.uploadBasic(credential);
}

3. 清除旧令牌缓存

删除路径C:\java\Quickstart\tokens下的所有文件,确保下次运行时重新获取包含新权限的令牌。

验证

重新运行代码,授权页面会显示新增的文件操作权限,完成授权后即可成功上传JPG文件到Google云端硬盘。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:37:06