首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数drive_auth()不会在提交密码时创建gargle-oauth令牌。

函数drive_auth()不会在提交密码时创建gargle-oauth令牌。
EN

Stack Overflow用户
提问于 2020-01-06 18:24:07
回答 2查看 581关注 0票数 1

R v3.6.2

RStudio桌面v1.2.5033

R软件包'googledrive‘v1.0.0

我已经编写了一个R脚本,它将csv文件上传到googlesheets帐户。为了避免这一点自动化,我使用了drive_auth()函数刷新OAuth令牌。代码很简单:

代码语言:javascript
复制
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")

在mac和Windows OS机器上,这都会打开一个要求登录详细信息的默认浏览器。当正确输入这些文件时,脚本现在具有上传/编辑文件的权限,googledrive函数随后工作。它在文件路径中创建一个授权令牌:

家庭/用户/.R/garle/gargle-oauth

但是,当尝试在将用作服务器的新笔记本上执行此操作时,会遇到以下错误消息:

代码语言:javascript
复制
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令牌,就像它在输入google登录详细信息时对其他机器所做的那样。

删除OAuth令牌后,我在另一台windows机器上重新运行该程序,它运行良好,从头开始再次创建令牌。我无法确定为什么没有在此实例中创建此令牌。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-10 18:20:16

我已经解决了这个问题,我将发布一个答案,以防任何人遇到类似的问题,并在谷歌搜索时看到这篇文章。

当使用googledrive初始化连接时,包使用默认端口1410。它无法与google建立连接,因为一个僵尸进程正在使用这个端口。

若要终止此进程,请将windows命令提示符(或mac上的命令行)打开为admin,并输入netstat命令:

代码语言:javascript
复制
C:\Users>netstat -ano|findstr "PID :1410"

这将返回(如果在此端口上运行任何内容):

代码语言:javascript
复制
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:1410.0.0.0:0 LISTENING 18264

右下角的数字是进程PID,将其输入以下命令以终止进程:

代码语言:javascript
复制
taskkill /pid 18264 /f

当运行任何R googledrive函数时,您现在应该能够授权您的代码与您的google帐户进行交互,并且它将创建一个OAuth令牌,以避免您再次经历这种情况。

票数 1
EN

Stack Overflow用户

发布于 2020-03-24 01:26:37

我确认这个问题也让我上了Ubuntu。我解决了这个问题,在端口1410 (它也在监听40167)上找到并终止了进程:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59617078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档