Функция drive_auth () не создает токен gargle-oauth при отправке пароля - PullRequest
0 голосов
/ 06 января 2020

R v3.6.2

RStudio Desktop v1.2.5033

R пакет 'googledrive' v1.0.0

Я написал скрипт R, который загружает файлы CSV в Googlesheets аккаунт. Чтобы избежать необходимости автоматизировать это, я использовал функцию drive_auth (), чтобы обновить sh токен OAuth. Код просто:

drive_auth(
 email = "email@gmail.com",
 path = NULL,
 scopes = "https://www.googleapis.com/auth/drive",
 cache = gargle::gargle_oauth_cache(),
 use_oob = gargle::gargle_oob_default(),
 token = NULL
)

drive_upload(file, overwrite=TRUE, type="spreadsheet")

На компьютере с ОС ma c и Windows, затем открывается браузер по умолчанию, запрашивающий данные для входа. Когда они введены правильно, у скрипта теперь есть права на загрузку / редактирование файлов, и впоследствии функции googledrive работают. Он создает маркер полномочий в пути к файлу:

Home / Users / .R / garle / gargle-oauth

Однако при попытке сделать это на новом ноутбуке, который будет использоваться как на сервере меня встречают следующие сообщения об ошибках:

Error: can't get Google credentials.
Are you running googlesheets in a non-interactive session? Consider:
* sheets_deauth() to prevent the attempt to get credentials.
* call 'sheets_auth()' directly with all necessary specifics.

При проверке папки gargle-oauth он не создал токен OAuth, как это было автоматически с другими машинами при входе в Google данные для входа.

Я перезапустил программу на другом компьютере windows после удаления токена OAuth, и он работал нормально, снова создав токен с нуля. Я не могу точно определить причину, по которой этот токен не создается в данном случае.

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Я подтверждаю, что эта проблема также попала мне в Ubuntu. Я решил это, найдя и убив процесс на порту 1410 (который также прослушивал 40167):

me@me:/internal$ netstat -tulpn
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       
PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      894/node
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:1410          0.0.0.0:*               LISTEN      21011/R
tcp        0      0 127.0.0.1:40197         0.0.0.0:*               LISTEN      21011/R
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -
tcp6       0      0 :::25                   :::*                    LISTEN      -
tcp6       0      0 :::443                  :::*                    LISTEN      -
tcp6       0      0 :::1917                 :::*                    LISTEN      1277/node /home/ult
tcp6       0      0 :::3838                 :::*                    LISTEN      -
tcp6       0      0 ::1:6379                :::*                    LISTEN      -
tcp6       0      0 :::80                   :::*                    LISTEN      -
udp        0      0 127.0.0.53:53           0.0.0.0:*                           -

me@me:/internal$ kill -HUP 21011
0 голосов
/ 10 января 2020

С тех пор я решил эту проблему, и я собираюсь опубликовать ответ на тот случай, если кто-нибудь столкнется с подобной проблемой и столкнется с этим сообщением во время поиска в Google.

При инициализации соединения с googledrive, Пакет использует порт по умолчанию 1410. Не удалось установить sh соединение с Google, потому что процесс zomb ie использовал этот порт.

Чтобы завершить этот процесс, откройте командную строку windows (или командную строку в ма c) от имени администратора и введите команду netstat:

C:\Users>netstat -ano|findstr "PID :1410"

Это будет ( если что-то работает на этом порту) return:

Proto Local Address Foreign Address State PID
TCP 0.0.0.0:1410.0.0.0:0 LISTENING 18264

Это число в правом нижнем углу является PID процесса, введите его в следующую команду, чтобы завершить процесс:

taskkill /pid 18264 /f

При запуске любых функций R googledrive вы должны теперь иметь возможность авторизовать свой код для взаимодействия с вашей учетной записью Google, и он создаст токен OAuth, чтобы вам не пришлось снова выполнять go.

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