问题描述
我希望将安全参数传递给shinyapps.io部署,以便我的应用程序可以通过以下方式获取它们:
Sys.getenv('PASSWORD_X')
我在rsconnect
包的deployApp
函数中找不到与此相关的任何内容。
推荐答案
您可以使用REnvironmental.site或.renviron将私有数据存储并访问到闪亮的应用程序中。(see here for Hadley Wickham's recommendations and instructions - ref example below)。
解决方案:
存储API身份验证密钥/令牌(Attribution: Hadley Wickham)
如果您的包支持基于API密钥或令牌的身份验证工作流,则鼓励用户将其存储在环境变量中。我们使用GitHub R包来说明这一点,该包包装了Githubv3API。根据您的API+软件包定制此模板,并将其包含在readme.md或Vignette中。- 在的个人访问令牌区域中创建个人访问令牌您的GitHub个人设置。将令牌复制到剪贴板。
- 标识您的主目录。不确定?在R中输入NormizePath("~/")控制台。
- 新建文本文件。如果在RStudio中,请执行文件>新建文件>文本文件。
创建如下行:
GITHUB_PAT=blahblahblahblahblahblah
其中,名称GITHUB_PAT
提醒您此API用于哪个API,blahblahblahblahblahblah
是您从剪贴板粘贴的个人访问令牌。
确保文件中的最后一行为空(如果不为空,R将静默无法加载文件。如果您使用的是显示行号的编辑器,则应该有两行,其中第二行为空。
使用文件名.Renviron保存在您的主目录中。如果被审问,是的,您确实希望使用以点开头的文件名。
- 请注意,默认情况下,点文件通常是隐藏的。但在RStudio中,文件浏览器将使.Renviron可见,因此将来易于编辑。
重新启动R.仅在R会话开始时处理Renviron。
/li>使用Sys.getenv()访问您的令牌。例如,下面介绍如何将GitHub_PAT与GitHub包一起使用:
library(github) ctx <- create.github.context(access_token = Sys.getenv("GITHUB_PAT")) # ... proceed to use other package functions to open issues, etc.
常见问题解答:为什么通过.Renviron而不是在.bash_profile或.bashrc中定义此环境变量?
因为有许多操作系统和运行R的方式的组合,其中.Renviron方法"正好有效",而bash方法"无效"。当R是Emacs或RStudio的子进程时,您不能总是指望将环境变量传递给R。将它们放在特定于R的启动文件中,这样可以省去一些麻烦。
这篇关于如何将环境变量传递给shinyapps的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!