公开时,ShinyApp 和 Google 身份验证存在问题

问题描述 投票:0回答:1

我有一个 ShinyApp,它应该与 Google 表格进行通信(读取和写入)。在本地环境中,代码运行良好,但是当我部署应用程序时,使用 .json 进行谷歌身份验证似乎不起作用。 Shinyapp.io 日志:

gs4_auth("client_secret_mysecret.apps.googleusercontent.com.json") 中的错误: 无法获取 Google 凭据。

我已经尝试了在那里和文档中可以找到的所有内容(我可能做错了某些事情),但我还没有找到解决方案。也许有人有同样的问题。这是我的代码的一部分:(如果您需要更多,请告诉我)

# Path to  service account JSON file 
json_path <- "my-json-fil.json"  # Update this path

# Authenticate using the service account JSON file
gs4_auth(path = json_path, cache = FALSE)

# Google Sheets URL or ID 
sheet_url <- "https://docs.google.com/spreadsheets/d/1wqsOXhZawPhX59N2n2c1rt7dLQfHurbxwlIX87QpJk4/edit"

# Player list
players <- c("Spieler1", "Spieler2", "Spieler3", "Spieler4")

# Define training dates
training_dates <- seq(as.Date("2024-07-22"), by = "7 days", length.out = 20)

training_dates <- sort(c(training_dates, seq(as.Date("2024-07-24"), by = "7 days", 
length.out = 20)))  # Every Wednesday

end_date <- as.Date("2025-04-15")

# Function to load data from Google Sheets
load_attendance_data <- function(sheet_url) {
  tryCatch(    {
  gs4_get(sheet_url) %>%
    read_sheet() %>%
    mutate(Datum = as.Date(Datum))
},
error = function(e) {
  showNotification("Fehler beim Laden der Daten. Verwende lokale Daten.", type = "error")
  data.frame(Spieler = rep(players, each = length(training_dates)),
             Datum = rep(training_dates, times = length(players)),
             Anwesend = FALSE)
    }
  )
}

# Function to save data to Google Sheets
save_attendance_data <- function(data, sheet_url) {
 tryCatch(
{
  write_sheet(data, sheet_url, sheet = 1)
  showNotification("Daten erfolgreich gespeichert!", type = "message")
},
error = function(e) {
  showNotification(paste("Fehler beim Speichern der Daten:", e$message), type = 
"error")
    }
  )
}

如果有人能帮助我,我会很高兴。 谢谢

r google-sheets shiny deployment google-oauth
1个回答
0
投票

我发现了错误。还需要谷歌驱动器的验证:

drive_auth(path = json_path)

© www.soinside.com 2019 - 2024. All rights reserved.