2015-09-02 15 views
6

Come posso accedere ai cookie e ad altri dati di sessione relativi al browser da un'app Shiny?Come accedere alla sessione del browser/cookie dall'interno dell'app Shiny

Con session$clientData, siamo in grado di ottenere altri dati di clienti come host, la porta, interrogare param ...

C'è un altro modo per ottenere i cookie in app lucido?

+0

È possibile ottenere sul lato javascript e usa 'Shiny.onInputChange' per passarlo nuovamente in Shiny –

+0

Non è possibile senza javascript? – sag

+1

Forse, ma non che io sappia di –

risposta

3

Per sfruttare i grandi commenti, è possibile utilizzare il pacchetto js.cookie.js con la funzione Shiny.OnInputChange() per restituire i cookie.

Un esempio app è qui: https://beta.rstudioconnect.com/iwallace/cookies/

--ui.r--

library(shiny) 
library(shinydashboard) 

fluidPage(
tags$head(tags$script(src="js.cookie.js")), 
# a shiny element to display unformatted text 
box(title ="click the gray square to view cookies!", verbatimTextOutput("results"),actionButton("go","click me")), 

# javascript code to send data to shiny server 
tags$script(' 
      document.getElementById("go").onclick = function() { 
      var number = Math.random(); 

      Cookies.set(\'name\', \'value\', { expires: 7 }); 
      Cookies.set(\'cookie_2\', \'value\', { expires: 7 }); 

      var my_cookie = Cookies.get(); 

      Shiny.onInputChange("mydata", my_cookie); 
      }; 
      ') 

)

--server.r--

library(shiny) 

shinyServer(function(input, output,session) { 
output$results = renderPrint({ 
input$mydata 
}) 

})