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

EC2实例上Shiny App连接Google Sheets认证失败问题

解决EC2上Shiny应用访问Google Sheets的认证问题

核心原因

Shiny应用运行时的工作目录、用户权限与SSH登录时的环境不一致,导致令牌文件无法被正确读取或访问。

解决方案

1. 使用绝对路径读取令牌文件

Shiny启动时的工作目录可能不是你SSH登录时的目录,替换相对路径为绝对路径:

# 替换为你myToken.rds的实际绝对路径,比如/home/ec2-user/myToken.rds
myToken <- readRDS('/full/path/to/myToken.rds')
gs4_auth(token = myToken)

2. 确保Shiny进程有权限读取令牌文件

如果使用Shiny Server,进程通常以shiny用户运行,需调整文件权限:

# 替换为令牌文件的绝对路径
sudo chown shiny:shiny /full/path/to/myToken.rds
# 设置可读权限
chmod 644 /full/path/to/myToken.rds

3. 显式指定认证缓存目录(可选)

gargle默认缓存目录可能对Shiny进程不可写,可指定一个公开可访问的缓存目录:

myToken <- readRDS('/full/path/to/myToken.rds')
# 指定/tmp下的缓存目录,确保Shiny有权限读写
gs4_auth(token = myToken, cache = "/tmp/gargle_cache")

4. 调试环境一致性

在app.R中添加调试代码,确认文件是否存在:

# 打印当前工作目录
cat("当前工作目录:", getwd(), "\n")
# 检查令牌文件是否存在
token_path <- '/full/path/to/myToken.rds'
cat("令牌文件是否存在:", file.exists(token_path), "\n")

myToken <- readRDS(token_path)
gs4_auth(token = myToken)

运行Shiny后查看日志,确认路径和文件访问状态。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 06:18:19