首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在googlesheets4中很难使用我自己的API键在shinyapps.io中

在googlesheets4中很难使用我自己的API键在shinyapps.io中
EN

Stack Overflow用户
提问于 2020-11-28 15:35:23
回答 2查看 971关注 0票数 3

我让googlesheets4在shinyapps.io中使用以下代码:

代码语言:javascript
复制
  gs4_auth(
email = "me@email.com",
path = NULL,
scopes = "https://www.googleapis.com/auth/drive",
cache = "path_to_cache",
use_oob = FALSE,
token = NULL)

我在本地运行它,它需要初始的浏览器身份验证,并下载某种类型的文件。

只要我用我的应用程序将该文件上传到shinyapps.io,它就能工作(即随时刷新令牌)。

然而,据我所知,这是使用googlesheets4自己的Google设置,设置这些设置是为了让每个人都更容易使用。

缺点是,由于很多人共享这个API,他们有时(包括我自己)会碰到数据限制,得到一个429资源耗尽的错误。这是讨论这里

好的,我遵循了这里这里的指令,在auth块之前添加了以下代码:

代码语言:javascript
复制
if (interactive()){
  # Desktop Client ID
  google_app <- httr::oauth_app(
    "my-awesome-google-api-wrapping-package",
    key = "mykey_for_desktop_app",
    secret = "mysecret"
  )
}else{
  # Web Client ID
  google_app <- httr::oauth_app(
    "my-awesome-google-api-wrapping-package",
    key = "mykey_for_web_app",
    secret = "mysecret"
  )
}

# API key
google_key <- "My-API-KEY"
gs4_auth_configure(app = google_app, api_key = google_key)
# Also configure google drive to use my API
drive_auth_configure(app = google_app, api_key = google_key)

因此,这似乎在本地起作用(例如在RStudio中),我可以在Google仪表板上看到活动。

然而,虽然这种方法工作时间很短(例如10分钟),即使上传到shinyapps.io,自动刷新似乎也失败了,因为我很快就会感到恐惧:

“无法获得谷歌凭据。您是否在非交互式会话中运行googlesheets4?”

有人能指出我做错了什么吗?

同样,只要我不尝试使用自己的API设置(第二个代码块),它就能正常工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-01 13:06:51

好吧,我很确定这件事.

正是YouTube视频这里真正起到了作用,并使变得更加清晰。

我所需要的只是一个服务帐户,它似乎产生了一个json文件,我可以用我的应用程序上传。

也就是说,在视频中的1:03左右显示了这个服务帐户的创建,然后将(服务帐户的)电子邮件地址添加到我想要访问的Google工作表中,这意味着我可以下载(使用GoogleDrive)和写(使用GoogleSheets)。

最疯狂的是,我需要在代码中输入以下内容:

代码语言:javascript
复制
drive_auth(path = ".secrets/client_secret.json")
gs4_auth(path = ".secrets/client_secret.json")

也就是说,这两行(加上服务帐户下载的json文件)替换了我在OP中发布的所有代码!

票数 2
EN

Stack Overflow用户

发布于 2021-02-03 23:53:33

如果有人正在阅读这篇文章,我会为Jimbo(出色的)答案的最后一步而挣扎,即如何将本地json文件上传到shinyapps.io。

我的工作解决方案是:我在闪亮的应用程序文件夹中创建了一个子文件夹,位于app.r文件旁边,名为“机密”。我把json文件放在那里了。在本地测试所有内容时,我确保将我的工作目录设置为闪亮的应用程序。(注意:不要在闪亮的应用程序代码中包含setwd()代码)。我不确定这是否以某种方式公开了json文件,但它必须这样做。

当发布到shinyapp时,我选中了Rstudio建议的所有框来上载文件夹的全部内容(app.r文件、子文件夹+子文件夹中的json文件)。我在app.r文件中使用了以下路径:

代码语言:javascript
复制
drive_auth(path = "secret/clientsecret.json")
gs4_auth(path = "secret/clientsecret.json")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65051305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档