I'm running R Studio on an AWS "Ubuntu Server 12.04.2" and accessing R Studio via my browser.
When I try to authenticate google auth API using the package googlesheets with the code:
gs_auth(token = NULL, new_user = FALSE,
key = getOption("googlesheets.client_id"),
secret = getOption("googlesheets.client_secret"),
cache = getOption("googlesheets.httr_oauth_cache"), verbose = TRUE)
The problem here is that it redirects me to browser which is of local machine (windows based). Even if I authorize it, it redirects to a URL like "http://localhost:1410/?state=blahblah&code=blahblah".
How do I authorize googlesheets in such case?
I have even tried transfering existing httr-oauth token from my windows machine to remove ubuntu server.
The simplest way to create a
gs_auth
token from a server is to set thehttr_oob_default
option to true, which will tell httr to use the out of band method for authenticating. You will be given a URL and expected to return an authorization code.One thing httr does when you set the
httr_oob_default
option is to redefine the URI tourn:ietf:wg:oauth:2.0:oob
as seen in the code for oauth-init.Alternatively, you can create a
.httr-oauth
token manually using httr commands. Use the out of band authentication mode by settinguse_oob=TRUE
in theoauth2.0_token
command.Another, less elegant, solution is to create the
.httr-oauth
token on your desktop and then copying the file to a server.After lot of head banging, I found that a package "httpuv" which supports HTTP handling and WebSocket requests from R was creating the problem. It was forcing R to open web browser. Once I uninstalled this package, "googlesheets" gave me a link which I could paste in browser separately and then paste the auth code back in R server.