Docker中用gmailr R包发Gmail邮件遇OAuth认证错误求解决
解决gmailr在Docker中的认证错误
直接修正代码问题
你的代码存在两个关键问题:
- 语法错误:
gm_auth_configure的路径字符串多了一个闭合双引号,导致路径解析失败 - 调用顺序错误:必须先配置OAuth客户端密钥,再执行认证操作
修正后的代码:
# 先配置OAuth客户端密钥 gm_auth_configure(path = "secrets/gmailkey.json", cache = TRUE) # 再读取本地token完成认证 gm_auth(token = gm_token_read(path = "secrets/gmailr-token.rds"))
Docker环境额外注意事项
- 确保密钥文件存在于镜像中
在Dockerfile中添加COPY指令,将本地secrets目录复制到容器内对应路径:
COPY ./secrets /path/to/your/app/secrets
替换/path/to/your/app为容器内R脚本运行的工作目录。
预先生成认证token
Docker容器通常无GUI环境,无法完成OAuth浏览器授权流程。需在本地机器先运行一次代码生成gmailr-token.rds,再将该文件放入secrets目录一同复制到镜像中。设置文件权限
确保容器内R进程可读取secrets目录文件,在Dockerfile中添加:
RUN chmod -R 644 /path/to/your/app/secrets
内容的提问来源于stack exchange,提问作者Gabriel
相关产品推荐
相关产品推荐

