Не удалось запустить API API Google лист с composer - PullRequest
0 голосов
/ 22 января 2020

Я использую извлечение google листа python API из Compute Engine, и он работает нормально, и я использую то же самое с composer, но он не работает

В composer, Я захожу в vm с тем же пользователем и запускаю команду s sh, и я использую ту же учетную запись службы в google sheet & vm

Ниже приводится сообщение об ошибке, которое я получаю

 File "/home/utetwork_multiplier.py", line 15, in sheet_reade
    result = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute(
  File "/hsite-packages/googleapiclient/_helpers.py", line 130, in positional_wrappe
    return wrapped(*args, **kwargs
  File "/on3.5/site-packages/googleapiclient/http.py", line 849, in execut
    raise HttpError(resp, content, uri=self.uri
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/14r0cQ1RCXhLyd7i0VCrmddXOFiugFnfioRb6cYI_BWQ/values/Master%21A%3AJ?alt=json returned "Request had insufficient authentication scopes."

Traceback (most recent call last)
  File "/usr/local/lib/airflow/airflow/contrib/operators/ssh_operator.py", line 164, in execut
    .format(self.command, error_msg)
airflow.exceptions.AirflowException: error running cmd: set -e;cd src/digital_platform && ../../venvs/bdp/bin/python -m.marketing.adnetwork_multiplier, error: Traceback (most recent call last)
  File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_mai
    "__main__", mod_spec
  File "/usr/lib/python3.5/runpy.py", line 85, in _run_cod
    exec(code, run_globals
  File "/home/tt/src/digital_platform//marketing/adnetwork_multiplier.py", line 74, in <module
    main(
  File "/home/tt/src/digital_platform//marketing/adnetwork_multiplier.py", line 28, in mai
    data = sheet_reader(range_name
  File "/home/tt/src/digital_platform//marketing/adnetwork_multiplier.py", line 15, in sheet_reade
    result = service.spreadsheets().values().get(spreadsheetId=spreadsheet_id, range=range_name).execute(
  File "/home//venvs/bdp/lib/python3.5/site-packages/googleapiclient/_helpers.py", line 130, in positional_wrappe
    return wrapped(*args, **kwargs
  File "/home//venvs/bdp/lib/python3.5/site-packages/googleapiclient/http.py", line 849, in execut
    raise HttpError(resp, content, uri=self.uri
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/14r0cQ1RCXhLydcYI_BWQ/values/Master%21A%3AJ?alt=json returned "Request had insufficient authentication scopes."


During handling of the above exception, another exception occurred

Области применения

  scope = [
        'https://www.googleapis.com/auth/bigquery',
        'https://www.googleapis.com/auth/spreadsheets.readonly',
        'https://www.googleapis.com/auth/spreadsheets'
    ]

    home = os.path.expanduser('~')
    csf = os.path.join(home, '.client_secret.json')
    token_filename = os.path.join(home, '.google_auth.dat')

    flow = flow_from_clientsecrets(csf, scope=scope, message="%s is missing" % csf)
    storage = Storage(token_filename)

    credentials = storage.get()
    if credentials is None or credentials.invalid:
        flags = tools.argparser.parse_args(args=[])
        flags.noauth_local_webserver = True
        credentials = tools.run_flow(flow, storage, flags=flags)

1 Ответ

0 голосов
/ 22 января 2020

Из сообщения об ошибке, которое вы запускаете Метод: spreadsheets.values.get

Этот метод требует одну из следующих областей для доступа

В сообщении об ошибке указано

403 при запросе https://sheets.googleapis.com/v4/spreadsheets/14r0cQ1RCXhLydcYI_BWQ/values/Master%21A%3AJ?alt=json return "Запрос имеет недостаточные области проверки подлинности.

Это означает, что пользователь, с которым вы прошли проверку подлинности, не прошел проверку подлинности ни с одной из указанных выше необходимых областей. Я предлагаю вам выйти из системы, удалив пользователя учетные данные для этого пользователя и снова запустите ваш код, убедившись, что при появлении экрана согласия он запрашивает одну из требуемых областей. Я подозреваю, что вы запускаете свой сценарий с устаревшими разрешениями от пользователя.

...