很难在shinyapps.io中的googlesheets4中使用我自己的API密钥 [英] Struggling to use my own API key with googlesheets4 in shinyapps.io

查看:22
本文介绍了很难在shinyapps.io中的googlesheets4中使用我自己的API密钥的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  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设置,这些设置是为了让每个人都可以轻松使用。

缺点是,由于很多人共享此API,他们(包括我自己)有时会遇到数据限制并得到429资源耗尽错误。讨论了here

好的,所以我已经按照herehere的说明进行了操作,并在已经提供的auth块之前添加了以下代码:

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 Cloud API仪表板上的活动。

但是,虽然这在很短的时间内(例如10分钟)有效,但即使上载到shinyapps.io,自动刷新似乎也失败了,因为我很快就得到了可怕的:

无法获取Google凭据(&P>&Q;)。您是否在非交互会话中运行googlesheets4?

(&Q;

)

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

再次说明-只要我不尝试使用我自己的API设置(第二个代码块),它就可以正常工作。

推荐答案

好的,我很确定我可以正常工作.

YouTube视频here确实有帮助,使this更加清晰。

我只需要一个服务帐户,它似乎会生成一个我可以用我的应用上载的json文件。

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

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

drive_auth(path = ".secrets/client_secret.json")
gs4_auth(path = ".secrets/client_secret.json")

即这两行(加上为服务帐户下载的json文件)替换我在操作中发布的所有代码!

这篇关于很难在shinyapps.io中的googlesheets4中使用我自己的API密钥的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆