Ошибка аутентификации при вызове API BigQueryV2 через учетную запись службы - PullRequest
0 голосов
/ 20 сентября 2019

Я хотел бы позвонить BigQuery V2 jobs.get API с python и служебной учетной записью.

В целях разработки я создал служебную учетную запись с разрешениями Owner + BigQuery Admin и загрузил файл локально.Области для вызовов были получены с сайта API Explorer *1006*.

from apiclient.discovery import build
from google.oauth2 import service_account

job_id = "df976258-aa9c-4fd1-ae8d-7604abc6d6e7"
key_path = "/path/to/sa/file/sa-key-file.json"
credentials = service_account.Credentials.from_service_account_file(key_path)
scoped_credentials = credentials.with_scopes(
    ['https://www.googleapis.com/auth/bigquery',
    'https://www.googleapis.com/auth/bigquery.readonly'
    'https://www.googleapis.com/auth/cloud-platform'
    'https://www.googleapis.com/auth/cloud-platform.read-only'])


service = build('bigquery', 'v2', credentials=scoped_credentials)

Локальная отладка этого кода приводит меня к неверной авторизации:

service._http.credentials.valid        # returns False

Следующий вопрос:

Если аутентификация работает, как мне вызвать метод jobs.get?Я пробовал несколько комбинаций, но всегда получаю ошибку:

service.jobs().get()                   # {TypeError}Missing required parameter "jobId"
service.jobs().get(project-id, job_id) # {TypeError}method() takes 1 positional argument but 3 were given
service.jobs(job_id).get(project-id)   # {TypeError}methodResource() takes 1 positional argument but 2 were given
service.jobs(project_id).get(job_id)   # {TypeError}methodResource() takes 1 positional argument but 2 were given
service.jobs().get(job_id)             # {TypeError}methodResource() takes 1 positional argument but 2 were given
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...