oauth_listener() нуждается в интерактивной среде (выполнение остановлено)

Пытаюсь запустить сценарий R (см. ниже) в пакетном режиме, и я получаю сообщение об ошибке oauth_listener() нуждается в интерактивной среде, а затем останавливает выполнение. Я обнаружил, что oath_listener() является частью пакета httr. Код отлично работает из R Studio, просто не запускается как Rscript.exe?

require(RODBC)
require(RSQLite)
require(RGoogleAnalytics)
require(httpuv)
require(httr)

client.secret <- "xxx"
client.id <- "xxx.apps.googleusercontent.com"

token <- Auth(client.id,client.secret)
save(token,file="./token_file")
ValidateToken(token)

person Austin Trombley    schedule 04.03.2015    source источник


Ответы (2)


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

if(file.exists("./token_file")){
  load("./token_file")
}else{
  token <- Auth(client.id,client.secret)
}
person cory    schedule 04.03.2015
comment
Однако это была отличная идея - все еще получаю ту же ошибку:/ - person Austin Trombley; 04.03.2015
comment
Также httr делает это за вас автоматически - person hadley; 05.03.2015
comment
@AustinTrombley, ты смог решить проблему? - person user1692342; 05.05.2015
comment
Да, мне пришлось сохранить файл токена в статичном месте, а не во временной папке. - person Austin Trombley; 06.05.2015

Когда вы запускаете свой сценарий R в R Studio или R, у него есть определенный рабочий каталог, который вы можете проверить с помощью следующей команды: getwd().
Когда вы запускаете свой сценарий внутри пакетного файла, он может иметь другой рабочий каталог, поэтому не найдите нужный файл токена.
Итак, вы можете сначала проверить каталог, в котором запущена команда getwd() внутри R Studio, а затем вставить команду setwd("same working directory from R Studio") в свой скрипт, чтобы установить тот же каталог, который вы используете внутри RStudio.

person Heblon Barbosa    schedule 08.07.2016