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

部署关联Google Drive的R-Shiny应用至shinyapps.io凭证报错如何解决

报错根因

你遇到的报错:

Error: Can't get google credentials
Are you runing googledrive in a non-interactive session? Consider:
drive_deauth() or drive_auth()...

本质原因是shinyapps.io属于非交互式运行环境,无法触发本地运行时的浏览器跳转授权流程:

  • drive_deauth()仅支持访问公开共享的Google Drive文件,你个人的私有文件未授权的情况下调用就会返回403错误
  • 普通drive_auth()默认走交互式授权逻辑,在无浏览器的部署环境下无法完成授权校验
最简解决步骤
  • 第一步:本地交互式环境下运行授权代码,生成缓存凭证
    本地R控制台运行如下代码,按照提示跳转浏览器完成Google账号授权,授权成功后会在当前目录生成.secrets缓存文件夹:
    library(googledrive)
    # 替换为你的谷歌账号邮箱
    drive_auth(cache = ".secrets", email = "your.google.account@gmail.com")
    # 验证授权正常,能找到目标文件即可
    drive_find("CST_Tree.csv")
    
  • 第二步:将.secrets文件夹移动到你的Shiny应用根目录,和app.R放在同一层级,部署shiny应用时要选中该文件夹一起上传到shinyapps.io
  • 第三步:替换你原有应用中的googledrive相关代码:
    library(googledrive)
    # 直接读取缓存的授权凭证,非交互环境下无需额外操作
    drive_auth(cache = ".secrets", email = "your.google.account@gmail.com", use_oob = TRUE)
    
    drive_download(
      "CST_Tree.csv",
      # 注意shinyapps.io为类Unix环境,不要用Windows反斜杠路径,直接用相对路径即可
      path = "./CST_Tree.csv",
      overwrite = TRUE
    )
    
    df <- read.csv("CST_Tree.csv")
    
可选非公开方案

如果你不想将目标CST_Tree.csv设置为公开可访问,可以使用谷歌云服务账号授权:

  1. 在谷歌云控制台创建服务账号,下载json格式的密钥文件
  2. 在你的Google Drive中,给该服务账号的邮箱地址开放CST_Tree.csv的查看权限
  3. 将密钥文件放到Shiny应用根目录,替换授权代码为:
drive_auth(path = "./你的服务账号密钥文件名.json")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 16:42:03