本文介绍了如何将环境变量传递给shinyapps的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望将安全参数传递给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中。

  1. 在的个人访问令牌区域中创建个人访问令牌您的GitHub个人设置。将令牌复制到剪贴板。
  2. 标识您的主目录。不确定?在R中输入NormizePath("~/")控制台。
  3. 新建文本文件。如果在RStudio中,请执行文件>新建文件>文本文件。
  4. 创建如下行:

    GITHUB_PAT=blahblahblahblahblahblah

其中,名称GITHUB_PAT提醒您此API用于哪个API,blahblahblahblahblahblah是您从剪贴板粘贴的个人访问令牌。

  1. 确保文件中的最后一行为空(如果不为空,R将静默无法加载文件。如果您使用的是显示行号的编辑器,则应该有两行,其中第二行为空。

  2. 使用文件名.Renviron保存在您的主目录中。如果被审问,是的,您确实希望使用以点开头的文件名。

    • 请注意,默认情况下,点文件通常是隐藏的。但在RStudio中,文件浏览器将使.Renviron可见,因此将来易于编辑。
  3. 重新启动R.仅在R会话开始时处理Renviron。

    /li>
  4. 使用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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-18 22:12