google sheets/google drive权限无法认证成功

这两天在做一个项目,但是一直卡在google权限认证无法通过,虽然知道国内用googlesheets或者google服务的并不多,但是实在是不想其他人复制我的心酸历程了,能帮到一些算一些吧。

遇到的问题

  1. credentials_service_account() trying credentials_service_account() 错误: parse error: premature EOF (right here) ------^
  2. Error in curl::curl_fetch_memory(url, handle = handle) : OpenSSL SSL_connect: 连接被对方重设 in connection to sheets.googleapis.com:443
  3. Warning: Error in : Can’t get Google credentials. Are you running googlesheets4 in a non-interactive session?
  4. gargle::oauth_app_from_json(path=’.json’) 错误: Can’t find ‘client_id’ and ‘client_secret’ in the JSON

以上这一连串的问题全都是因为,google没有成功认证。不过各自有各自的子问题。

本机环境

环境 具体信息 是否和问题相关
系统 Ubuntu 20.04 无关
使用的语言 R 无关
需要使用的服务 google认证 有关
所在地 大陆 有关

解决方案

先说结论,出现google认证失败这类错误,首先我默认你已经开了cross the wall软件,但是我们需要的是V****N工具,不是SS,所以你下载一个V*****N工具就可以解决这个问题了。

回到问题本身,如果我们想用google的服务,首先需要通过google的身份认证。
身份认证有两种方式

  • 第一种是使用json文件进行无交互式认证,这种方式直接从文件中加载身份信息。
    其中,JSON文件分两种
  1. Service account token:
    这种文件的内容是
{
  "type": "service_account",
  "project_id": "some-project",
  "private_key_id": "123456ffff123456",
  "private_key": "-----BEGIN PRIVATE KEY-----\nrandomlongRSAstringofletters\n-----END PRIVATE KEY-----\n",
  "client_email": "[email protected]",
  "client_id": "1234566",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/project-name%40some-project.iam.gserviceaccount.com"
}
  1. OAuth App:
    这种文件的内容是:
{
	  "web": {
	    "client_id": "1234567.apps.googleusercontent.com",
	    "project_id": "some-project",
	    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
	    "token_uri": "https://oauth2.googleapis.com/token",
	    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
	    "client_secret": "aSeriesOfCode"
	  }
}

回去看报错信息4,其实就是将OAuth将service account弄混了。如果修改好了之后还没好,那就继续看我写的第二钟。

PS:JSON文件的申请方式:service account

  • 第二种是交互式认证,启动之后,弹出一个网页让你登录自己的google账号,再按照他的指示操作。
    如果操作结束之后,网页显示权限认证完成,返回到程序后控制台却无反应过一阵却加载出了超时,或者单纯的无信息之后提示认证失败(我提示超时是因为我在R中开启了debug模式)。原因基本就锁定在了网络上面,将你的SS工具更换成V*****N工具,大部分的问题都会解决了。
    PS: 交互式认证的token保存方法 针对R语言

PS2: 如果你的JSON文件认证失败,他会直接弹出一个oAuth网页,所以在你看到弹出网页的一刻就知道自己这个没搞对。

如果问题还是没解决,拿我自己的问题来举例,我想用的是google sheets, 可是按照上面的json教程,我开的是google drive的api,认证还是依然过不去。是因为除此之外,google sheets的api也是应该被enable的。打开googlesheets的api后,等个一分钟再重新认证就好了。

如果想知道更多关于cross the wall工具之间的差异,这篇文章说的很好:浅谈v*****n、vps、Proxy以及shadowsocks之间的联系和区别 点开之后的第三篇文章(链接里有v*******n过不了审核:)))))))

参考资料:

  1. https://github.com/tidyverse/googlesheets4/issues/27#issuecomment-507011452
    这个commit的信息十分有帮助(对于R使用者来讲)

猜你喜欢

转载自blog.csdn.net/ptyp222/article/details/115507007