嗨,我想使用 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 上的输出相同。