2017-01-12 12 views
2

, так что сейчас я пытаюсь написать скрипт python, который загружает несколько файлов из нашего хранилища Google , Я использую Windows, установил Google Cloud SDK и настроить все с GSUtil, так что я могу успешно загрузить файл в набрав после командной строки:Попытка загрузить данные из google storage bucket приводит к apiclient.errors.HttpError: <HttpError 403 ... возвращается «Запрещено»>

gsutil cp gs://pubsite_prod_rev_****/financial-stats/subscriptions/***.csv .

Это загружает соответствующий файл CSV в моем папка. Круто.

Теперь я попробовал то же самое в питоне, следуя эту документацию от Google: https://support.google.com/googleplay/android-developer/answer/6135870?hl=en (вы должны нажать на кнопку «Загрузить отчеты с помощью клиентской библиотеки учетной записи & службы», а затем на «пример Python», чтобы показать код Python)

Я использовал тот же самый код

import json 
from httplib2 import Http 
from oauth2client.client import SignedJwtAssertionCredentials 
from apiclient.discovery import build 
from urllib import quote 

client_email = 'serviceAccountEmail' 
json_file = 'pathToMyServiceAccountPrivateKey' 
cloud_storage_bucket = 'pubsite_prod_rev_******' 
report_to_download = 'financial-stats/subscriptions/fileName.csv' 

print report_to_download 

private_key = json.loads(open(json_file).read())['private_key'] 
credentials = SignedJwtAssertionCredentials(client_email, private_key, 'https://www.googleapis.com/auth/devstorage.read_only') 

storage = build('storage', 'v1', http=credentials.authorize(Http())) 

print storage.objects().get(bucket=cloud_storage_bucket, object=report_to_download).execute() 

загрузить CSV-file.Unfortunetaley этот результат в следующем сообщении:

Traceback (most recent call last): 
    File "C:/Office/Financial Reports/Python Reporter/Test.py", line 66, in <module> 
    print storage.objects().get(bucket=cloud_storage_bucket, object=report_to_download).execute() 
    File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\bq\third_party\oauth2client\util.py", line 137, in positional_wrapper 
    return wrapped(*args, **kwargs) 
    File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\bq\third_party\apiclient\http.py", line 724, in execute 
    raise HttpError(resp, content, uri=self.uri) 
apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/storage/v1/b/pubsite_prod_rev_17179175168453545219/o/financial-stats%2Fsubscriptions%2Fsubscriptions_de.kaasahealth.namagi_cody_monthly_sub_201701_device.csv?alt=json returned "Forbidden"> 

Так что, очевидно, что что-то не так с URL-адресом, который он создает. Но я не знаю, что именно, поскольку это то же самое, что Google говорит нам делать на странице документа.

Надежда кто-то может помочь мне здесь:/

EDIT: Я изменил отслеживающий, как она изменилась с ошибкой 404 ошибки 403 сейчас ..

ответ

0

Хорошо так причина, почему это не работа довольно легко. Вы должны разрешить доступ и добавить права администратора или меньше (но я не пробовал другие возможности) внутри консоли Google Dev, хотя Настройки -> API. Удовлетворите и отпустите учетную запись службы, которую вы используете.

0

Это означает, что вы теперь имеют разрешения для загрузки отчетов из

Google Play консоли -> Загрузить отчеты -> Финансовые (или что-то связано с финансовыми отчетами).

Здесь вы можете скачать те же файлы, которые вы пытаетесь скачать, с помощью gsutil. Как только у вас есть разрешения на загрузку отчетов из Google Play Console, вы сможете загрузить его с помощью gsutil или программно

 Смежные вопросы

  • Нет связанных вопросов^_^