我目前正在使用一个R闪亮的应用程序,该应用程序利用googlesheets4从GoogleSheet读取数据。我认识到身份验证对于访问GoogleSheets很重要,所以我尝试使用app.R文件中的代码(为了隐私起见删除了电子邮件和api密钥)对应用程序进行身份验证:
### AUTHENTICATE FOR GOOGLE SHEETS ACCESS ###
sheets_auth(
email = "MY EMAIL",
path = NULL,
scopes = "https://www.googleapis.com/auth/spreadsheets",
cache = gargle::gargle_oauth_cache(),
use_oob = gargle::gargle_oob_default(),
token = "MY API KEY"
)当我用这段代码在本地运行仪表板时,它首先加载一个网页,请求登录到Google,并验证Tidyverse的API:Tidyverse的截图。在我登录后,应用程序在一个单独的窗口中完全打开。
但是,我不希望用户在使用我的仪表板时必须对其进行身份验证。理想情况下,我希望将必要的信息包含在闪亮的代码中,这样应用程序就可以自行验证对GoogleSheet的访问权限。
我对googlesheets4和API都非常陌生,所以非常感谢将正确的凭据输入app.R文件的所有指导。
谢谢!
最新情况.4.23.20
利用https://gargle.r-lib.org/articles/non-interactive-auth.html#provide-a-service-account-token-directly后
我已经能把这件事解决了。最后一个障碍是在发布阶段,在这个阶段,我在应用程序启动时会遇到这个错误:
错误:找不到.auth代码就像我现在拥有的那样:
### AUTHENTICATE FOR GOOGLE SHEETS ACCESS ###
library(gargle)
library(googleAuthR)
library(searchConsoleR)
library(googledrive)
# Approach #1: use an option.
# Either specify the user:
options(gargle_oauth_email = "MY EMAIL")
# INSERT JSON FILE FROM GOOGLE API SERVICE ACCOUNT
drive_auth(path = "FTRjsonGoogleAPI.json")
options(gargle_quiet = FALSE)发布于 2021-02-13 13:43:29
对我有用的是将令牌保存在一个.secrets文件中,在部署这个闪亮的应用程序时上传该文件。
守则是:
library(googledrive)
library(googlesheets4)
# Google sheets authentification -----------------------------------------------
options(gargle_oauth_cache = ".secrets")
drive_auth(cache = ".secrets", email = "youremail@gmail.com")
gs4_auth(token = drive_token())您需要在本地运行一次才能登录。它将检查一个.secrets文件,或者读取它,或者要求您登录并存储令牌。然后,这个.secrets文件可以与应用程序的其他部分一起上传。
https://stackoverflow.com/questions/61375368
复制相似问题