我想将安全参数传递给Shinyapps.io部署,以便我的应用程序可以通过以下方式获取它们:
Sys.getenv('PASSWORD_X')
我在deployApp包的rsconnect函数中找不到任何与此相关的内容。

最佳答案

您可以使用 Renviron.site .Renviron 将私有(private)数据存储并访问到 Shiny 的应用程序中。 (see here for Hadley Wickham's recommendations and instructions - ref example below)。

解:

存储API身份验证密钥/ token (Attribution: Hadley Wickham)

如果您的软件包支持基于API密钥或 token 的身份验证工作流,则鼓励用户将其存储在环境变量中。我们使用包装了Github v3 API的github R包对此进行了说明。将此模板定制为您的API +软件包,并包含在README.md或小插图中。

  • 在以下站点的“个人访问 token ”区域中创建个人访问 token 。
    您的GitHub个人设置。将 token 复制到剪贴板。
  • 标识您的主目录。不确定?在R中输入normalizePath(“〜/”)
    安慰。
  • 创建一个新的文本文件。如果在RStudio中,请执行文件>新建文件>
    文本文件。
  • 创建这样的一行:

    GITHUB_PAT = blahblahblahblahblahblah

  • 其中名称GITHUB_PAT会提醒您这是哪个API,而blahblahblahblahblahblah是您的个人访问 token ,粘贴在剪贴板上。
  • 确保文件的最后一行为空(如果不是,R将无提示地加载该文件。如果您使用的是显示行号的编辑器,则应该有两行,第二行为空。
  • 使用文件名.Renviron保存在主目录中。如果有疑问,
    是的,您确实要使用以点。开头的文件名。
  • 请注意,默认情况下通常隐藏点文件。但是在RStudio中,文件浏览器将使.Renviron可见,因此将来可以轻松进行编辑。
  • 重新启动R。Renviron仅在R session 开始时进行处理。
  • 使用Sys.getenv()访问您的 token 。例如,以下是在github软件包中使用GITHUB_PAT的方法:
    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的启动文件中,可以避免麻烦。

    关于r - 如何将环境变量传递给ShinyApps,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39084284/

    10-12 17:30