Можно ли автоматически аутентифицировать dropbox внутри экземпляра shinyapps.io? - PullRequest
3 голосов
/ 08 января 2020

Я пытаюсь разрешить аутентификацию Dropbox в своем блестящем приложении, следуя инструкциям на этой странице https://deanattali.com/blog/shiny-persistent-data-storage/. К сожалению, решение для аутентификации заключается в ручной загрузке файла .httr-oauth и загрузке его на сервер shinyapps.io вместе с остальными файлами приложения. Я не хочу использовать это решение по соображениям безопасности (мой код написан для удаления файла httr-oauth в конце сеанса).

На своем локальном компьютере я запускаю приложение и нажимаю «dropbox» actionButton, и он запускает страницу аутентификации dropbox через мой браузер, и когда я нажимаю «Принять», он загружает файл .httr-oauth на мой компьютер. На данный момент приложение работает как положено.

Однажды на shinyapps.io я нажимаю ту же кнопку action, и ничего не происходит. Когда я просматриваю логи, я вижу такой вывод:

2020-01-07T05:06:56.868530+00:00 shinyapps[1632564]: Adding .httr-oauth to .gitignore
2020-01-07T05:06:56.884364+00:00 shinyapps[1632564]: Waiting for authentication in browser...
2020-01-07T05:06:56.884645+00:00 shinyapps[1632564]: Press Esc/Ctrl + C to abort
2020-01-07T05:06:56.886158+00:00 shinyapps[1632564]: Please point your browser to the following url: 
2020-01-07T05:06:56.886474+00:00 shinyapps[1632564]: https://www.dropbox.com/oauth2/authorize?client_id=XXXXXXX

Кроме того, насколько я могу судить, если бы я даже мог позволить пользователю перейти по ссылке напрямую, это, вероятно, приведет к ошибка, поскольку client_id перенаправляет на локальный хост: 1410.

Я не очень много пробовал, я относительно новичок в R и очень плохо знаком с блестящим (первое приложение), поэтому я в растерянности. Поиск по обмену стека, который я уже сделал, упоминал использование Rselenium для перехода по ссылкам, но это было для гораздо более простой проблемы, и я не уверен, смогу ли я заставить его работать.

Любая помощь, было бы полезно даже просто указать мне правильное направление.

РЕДАКТИРОВАТЬ: Relevent code

server <- function(input, output, session){

    observeEvent(input$upload,
                     rdrop2::drop_auth())
}

rdrop2 :: drop_upload берет предоставленный параметр и загружает этот локальный файл в dropbox. Если он не может найти учетные данные аутентификации, он инициирует новый запрос аутентификации. Когда я запускаю приложение на своем локальном компьютере, оно запускает окно браузера с вопросом, даду ли я разрешение rdrop2, а затем загружает файл httr-oauth.

...