1

嗨,我想使用 pygsheets 将事件记录到我的谷歌电子表格中。这将被安排在一个 Web 服务器中,尤其是 Heroku 中。

我只使用这些行进行身份验证:

import pygsheets
gc = pygsheets.authorize()

在本地运行,它工作正常,因为我必须复制身份验证链接并在之后粘贴代码。但是如果它在 Heroku 上呢?

我在 Heroku 上得到这些日志:

2018-09-06T03:48:25.234859+00:00 app[web.1]: Your browser has been opened to visit:
2018-09-06T03:48:25.234861+00:00 app[web.1]: 
2018-09-06T03:48:25.234870+00:00 app[web.1]:     https://accounts.google.com/o/oauth2/auth?client_id=XXXXXXXX-iXXXXXXXXXXXXXX.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&access_type=offline&response_type=code
2018-09-06T03:48:25.234872+00:00 app[web.1]:

我尝试复制链接,它要求我登录。端点是这个链接:

http://localhost:8080/?code=4/UgAXXXX6cdAt5Cnuj7yvTeoUgtfWyCvi8e2Rw-cxWiBVhACvom1qVgln0OfE1mOz3zENCXXXXvsOU4daXxI#

我不确定为什么它是本地主机。

我还研究了为 Heroku 验证 Google Cloud Services 并碰到了这个LINK

我创建了另一个服务帐户密钥。

并在我的 CLI 上写道:

$ heroku config:set GOOGLE_APPLICATION_CREDENTIALS=‘keyFile.json’

但它仍然不能解决问题。我仍然得到这些日志:

2018-09-06T03:55:59.083071+00:00 app[web.1]: Your browser has been opened to visit:
2018-09-06T03:55:59.083072+00:00 app[web.1]: 
2018-09-06T03:55:59.083075+00:00 app[web.1]:     https://accounts.google.com/o/oauth2/auth?client_id=XXXXX-isqd84kjnfu7o6XXXX6p79crvco2ms.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8090%2F&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&access_type=offline&response_type=code
2018-09-06T03:55:59.083076+00:00 app[web.1]: 
2018-09-06T03:55:59.083078+00:00 app[web.1]: If your browser is on a different machine then exit and re-run this
2018-09-06T03:55:59.083080+00:00 app[web.1]: application with the command-line parameter
2018-09-06T03:55:59.083082+00:00 app[web.1]: 
2018-09-06T03:55:59.083084+00:00 app[web.1]:   --noauth_local_webserver

我的目录顺便说一句,

- app.py
- client_secret.json
- keyfile.json
- Procfile
- requirements.txt

更多:我也尝试过使用:

gc = pygsheets.authorize(service_account_file='keyfile.json')

但是 Heroku 上的输出相同。

4

1 回答 1

1

我认为您的问题是您在本地和 Heroku 上使用不同版本的 pygsheets。在您的本地,您使用的是主版本。但是在您使用 1.1.4 的服务器上,它需要设置一个outh_nonlocal参数以在服务器中启用 oauthorization。service_account 的参数也从service_file.

于 2018-09-06T16:48:08.397 回答