Ich war hier früher auf der Suche nach Antworten und wollte nur teilen, was ich gefunden habe, jetzt, wo ich es funktioniert habe.
Sie können dies jetzt tun, und es ist nur ein wenig schmerzhaft. Das Tricksen der Image- oder Blobstore-API wird nicht unterstützt und scheint nicht mehr zu funktionieren.
See:
Wenn Sie Ihre URLs unterschreiben, können Sie automatisch ablaufende Links auf Ihre Inhalte, für anonyme oder paywalled Verbrauch geben. Sie möchten nicht Ihre gesamte Website auf diese Weise bereitstellen, aber für eine PDF oder was auch immer, dies ist eine gültige und halb sichere Option.
In der Dokumentation fehlt möglicherweise die Zeilenschaltung für die erweiterten kanonischen Header. Der Speicherendpunkt sagt Ihnen, was er erwartet, wenn die Signatur fehlerhaft ist.
Außerdem sollte Ihr Gastgeber sein: https://storage-download.googleapis.com/
Wenn Sie App Engine verwenden, dann die GoogleAccessId
ist: <Projektname> @ appspot.gserviceaccount.com
See: app_identity.get_service_account_name()
Beispiel für die Generierung der Signatur:
from google.appengine.api import app_identity
def signFile(path, verb='GET', md5='', contentType='',
expiration=''):
signatureRequest = '{}\n{}\n{}\n{}\n{}'.format(
verb, md5, contentType, expiration, path)
return app_identity.sign_blob(signatureRequest)
Das gibt ein Tupel von (privateKey, binarySignature)
zurück.
Jetzt müssen Sie die URL erstellen. Die Signatur sollte base64-codiert und dann urlencodiert sein.Im Folgenden wird beschrieben, wie die URL erstellt wird. Sie sollten wahrscheinlich den oben genannten Download-Host verwenden.
Beispiel-URL aus der Dokumentation:
https://storage.googleapis.
com/example-bucket/[email protected]
ccount.com&Expires=1458238630&Signature=VVUgfqviDCov%2B%2BKnmVOkwBR2olSbId51kSib
uQeiH8ucGFyOfAVbH5J%2B5V0gDYIioO2dDGH9Fsj6YdwxWv65HE71VEOEsVPuS8CVb%2BVeeIzmEe8z
7X7o1d%2BcWbPEo4exILQbj3ROM3T2OrkNBU9sbHq0mLbDMhiiQZ3xCaiCQdsrMEdYVvAFggPuPq%2FE
QyQZmyJK3ty%2Bmr7kAFW16I9pD11jfBSD1XXjKTJzgd%2FMGSde4Va4J1RtHoX7r5i7YR7Mvf%2Fb17
zlAuGlzVUf%2FzmhLPqtfKinVrcqdlmamMcmLoW8eLG%2B1yYW%2F7tlS2hvqSfCW8eMUUjiHiSWgZLE
VIG4Lw%3D%3D
Ich hoffe, das jemand hilft!
Oh yeah, Sie müssen nur alle Signatur-Sachen machen, wenn Ihr Bucket nicht öffentlich zugänglich ist (read-all).
Was meinen Sie mit "lokalen Cloud-Speicherdateien im SDK"? –
Dateien, die in meinem SDK-Standard-Bucket gespeichert wurden. – voscausa
Es gibt keinen SDK-Standard-Bucket. Nur Ihre Anwendung hat einen Standard-Bucket. –