Как аутентифицировать облачные сервисы Google на PyGSheets, развернутых на веб-сервере (Heroku) - PullRequest
0 голосов
/ 06 сентября 2018

Привет! Я хочу использовать таблицы для регистрации событий в моей электронной таблице Google. Это будет запланировано, таким образом, развернуто на веб-сервере, в частности 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#

Я не уверен, почему это localhost.

Я также занимаюсь проверкой подлинности облачных служб Google для Heroku и наткнулся на эту ССЫЛКУ .

Я создал другой ключ учетной записи службы.

и написал на моем 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.

1 Ответ

0 голосов
/ 06 сентября 2018

Я думаю, что ваша проблема в том, что вы используете разные версии таблиц на своем сайте и в Heroku. На вашем локальном вы используете мастер-версию. но на сервере вы используете 1.1.4, который должен установить параметр outh_nonlocal, чтобы разрешить авторизацию на сервере. также параметр для service_account был изменен с service_file.

...