我在Google Firebase中有一个包含流媒体传感器数据的数据库.我有一个Shiny应用程序需要读取这些数据并映射传感器及其值.
我试图将Firebase中的数据拉入R,但找不到任何执行此操作的程序包.该应用目前正在本地下载的数据上运行.
我找到了FireData包,但不知道它是如何工作的.
我知道你可以用Python从Firebase中提取数据,但我不知道有足够的Python来做这件事,但如果有必要,我愿意用RPython在R中编码.
有没有人过去尝试过Firebase和R / Shiny?
我希望我的问题很清楚.
现在您已经有了一个项目,请在概述页面上选择“将Firebase添加到您的Web应用程序”选项.它将为您提供所需的所有凭据信息.
[
在R中处理此类信息的一种方法是将其添加到.Renviron文件中,这样您就不需要与代码共享它(例如,如果它转到github).关于how to manage .Renviron files in the Efficient R Programming Book的描述很好.
API_KEY=AIzaSyBxxxxxxxxxxxxxxxxxxxLwX1sCBsFA
AUTH_DOMAIN=stackoverflow-1c4d6.firebaseapp.com
DATABASE_URL=https://stackoverflow-1c4d6.firebaseio.com
PROJECT_ID=stackoverflow-1c4d6
重新启动R后,这将在您的R会话中可用(如果您进行了任何更改).
所以现在你可以尝试一下.但首先,更改firebase数据库的规则以允许任何人进行更改和读取(以使这些示例正常工作)
现在您可以运行以下示例
library(fireData)
api_key <- Sys.getenv("API_KEY")
db_url <- Sys.getenv("DATABASE_URL")
project_id <- Sys.getenv("PROJECT_ID")
project_domain <- Sys.getenv("AUTH_DOMAIN")
upload(x = mtcars,projectURL = db_url,directory = "new")
上传功能将返回其保存的文档的名称,然后您可以使用它来下载它.
> upload(x = mtcars,directory = "main")
[1] "main/-L3ObwzQltt8IKjBVgpm"
您上传的数据框(或值向量)将立即在您的Firebase数据库控制台中以该名称提供,因此您可以验证所有内容是否按预期进行.
现在,例如,如果返回的名称为main / -L3ObwzQltt8IKjBVgpm,则可以按如下方式下载.
download(projectURL = db_url,fileName = "main/-L3ObwzQltt8IKjBVgpm")
创建用户后,您可以要求身份验证.例如,您可以像这样创建用户(用户出现在您的firebase控制台中).
createUser(projectAPI = api_key,email = "test@email.com",password = "test123")
registered_user <- auth(api_key,password = "test123")
然后使用返回的tokenID来访问文件.
download(projectURL = db_url,fileName = "main/-L3ObwzQltt8IKjBVgpm",secretKey = api_key,token = registered_user$idToken)