Есть ли способ автоматической аутентификации доступа к GoogleSheets при загрузке приложения R Shiny? Googlesheets4 проблема аутентификации - PullRequest
0 голосов
/ 23 апреля 2020

В настоящее время я работаю с приложением R Shiny, которое использует 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, и проверяет подлинность API Tidyverse: снимок экрана API Tidyverse .... После входа в систему приложение открывается в отдельном окне. прекрасно.

Однако я не хочу, чтобы пользователи что-либо аутентифицировали при использовании моей панели мониторинга после публикации. В идеале я хотел бы, чтобы необходимая информация, включенная в код Shiny, позволяла приложению самостоятельно проверять доступ к GoogleSheet.

Я очень новичок в googlesheets4 и API в целом, поэтому ценим всех и каждого руководство по получению правильных учетных данных в мой файл app.R.

Спасибо!


ОБНОВЛЕНИЕ ... 4.23.20

После использования https://gargle.r-lib.org/articles/non-interactive-auth.html#provide -a-service-account-token-direct

Мне удалось почти полностью решить эту проблему. Последнее препятствие на этапе публикации, где я получаю эту ошибку при запуске приложения:

Ошибка: .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)
...