2

zurückgegeben, also versuche ich jetzt, ein Python-Skript zu schreiben, das ein paar Dateien aus unserem Google-Speicher lädt . Ich verwende Windows, haben die Google Cloud SDK installiert und alles eingerichtet mit gsutil, so kann ich erfolgreich eine Datei laden die nach der Kommandozeile in eingeben:Der Versuch, Daten aus dem Google Storage Bucket zu laden, führt zu einem apiclient.errors.HttpError: <HttpError 403 ... hat "Forbidden">

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

Dies lädt eine richtige CSV-Datei zu meiner Mappe. Cool.

Jetzt habe ich versucht, das gleiche in Python, im Anschluss an dieser Dokumentation von Google: https://support.google.com/googleplay/android-developer/answer/6135870?hl=en (Sie auf „Download Berichten mit einem Client-Bibliothek & Dienstkonto“ klicken und dann auf „Python Beispiel“ den Python-Code zu erhalten)

verwenden ich den exakt gleichen Code

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() 

die cSV file.Unfortunetaley dieses Ergebnis in der folgenden Meldung zu laden:

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"> 

So offensichtlich ist etwas falsch mit der URL, die es erstellt. Aber ich weiß nicht genau, was genau das ist, was Google uns auf der Doc-Seite sagt.

Hoffnung kann mir hier jemand helfen:/

EDIT: Ich habe die Zurückverfolgungs geändert, wie es von Fehler 404 geändert 403 jetzt auf Fehler ..

Antwort

0

Ordnung so der Grund, warum es nicht funktioniert hat war ziemlich einfach. Sie müssen den Zugriff aktivieren und Admin-Rechte oder weniger hinzufügen (aber ich habe die anderen Möglichkeiten nicht ausprobiert) innerhalb der Google Dev-Konsole über Einstellungen -> API-Zugriff und wählen Sie das Dienstkonto, das Sie verwenden.

0

Es heißt, Sie müssen jetzt Berechtigungen Berichte von

Google Play Console zum Download -> Download Berichte -> Finanz (oder etwas zu den Finanzberichten im Zusammenhang).

Dort können Sie die gleichen Dateien herunterladen, die Sie über gsutil herunterladen möchten. Sobald Sie berechtigt sind, Berichte von der Google Play Console herunterzuladen, können Sie sie mit gsutil oder programmgesteuert

herunterladen
Verwandte Themen