我在AWS“Ubuntu Server 12.04.2”上运行R Studio并通过浏览器访问R Studio。
当我尝试使用包googlesheets和代码验证google auth API时:
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)
这里的问题是它将我重定向到本地机器(基于Windows)的浏览器。 即使我授权它,它也会重定向到“http://localhost:1410/?state=blahblah&code=blahblah”这样的网址。
在这种情况下如何授权googlesheets?
我甚至尝试从我的Windows机器上传输现有的httr-oauth令牌以删除ubuntu服务器。
答案 0 :(得分:7)
从服务器创建gs_auth
令牌的最简单方法是将httr_oob_default
选项设置为true,这将告诉httr使用带外方法进行身份验证。您将获得一个URL,并希望返回授权码。
library(googlesheets)
options(httr_oob_default=TRUE)
gs_auth(new_user = TRUE)
gs_ls()
设置httr_oob_default
选项时httr做的一件事就是将URI重新定义为urn:ietf:wg:oauth:2.0:oob
,如oauth-init的代码所示。
或者,您可以使用httr命令手动创建.httr-oauth
令牌。通过在use_oob=TRUE
命令中设置oauth2.0_token
来使用带外验证模式。
library(googlesheets)
library(httr)
file.remove('.httr-oauth')
oauth2.0_token(
endpoint = oauth_endpoints("google"),
app = oauth_app(
"google",
key = getOption("googlesheets.client_id"),
secret = getOption("googlesheets.client_secret")
),
scope = c(
"https://spreadsheets.google.com/feeds",
"https://www.googleapis.com/auth/drive"),
use_oob = TRUE,
cache = TRUE
)
gs_ls()
另一个不太优雅的解决方案是在桌面上创建.httr-oauth
令牌,然后将文件复制到服务器。
答案 1 :(得分:0)