Ich versuche Bilder in Eimern auf Google Cloud Storage die JSON API mit hochladen, die Javascript Probe mit: Api Javascript SampleGoogle Cloud Storage Javascript Usage
Ich bin in der Lage Bilder hochladen, aber es fragt mich meine einzuloggen auf Google Benutzerkonto.
Das Beispiel enthält eine Autorisierungsschaltfläche, von der ich weiß, dass sie die OAuth-Anmeldeinformationen verwaltet.
function checkAuth() {
gapi.auth.authorize({
client_id: clientId,
scope: scopes,
immediate: true
}, handleAuthResult);
}
Das Problem ist:
ich, ohne die Popup-Fenster authentifizieren will, das heißt ohne Login mit Google. Da mein Kunde die E-Mail-Adresse oder das Passwort nicht kennt, möchte ich, dass sie automatisch erfolgt.
Wie kann ich das erreichen?
Danke!
----------------------------- UPDATE ---------------- ----
folgende So Brandon Antwort i folgendes getan:
ich mein politisches Dokument erstellt haben und unterzeichnet es wie folgt aus:
var http = require('http');
var fs = require('fs');
var crypto = require('crypto');
var express = require('express');
var app = express();
var p12ToPem = require("./node_modules/p12-to-pem/p12ToPem.js");
var p12File = fs.readFileSync("./KEY.p12");
var pemKey = p12ToPem(p12File, "notasecret");
var policyJson={"expiration": "2050-06-16T11:11:11Z",
"conditions": [["starts-with", "$key", "" ],
{"acl": "bucket-owner-read" },
{"bucket": "my-bucket'name"},
{"success_action_redirect":"http://www.example.com/success_notification.html" },
["eq", "$Content-Type", "image/jpeg" ],
["content-length-range", 0, 1000000]
]
};
var policyJson64 = new Buffer(''+policyJson).toString('base64');
var sign = crypto.createSign('RSA-SHA256');
sign.update(policyJson64);
var sig = sign.sign(pemKey, 'base64')
console.log("policyJson64:"+policyJson64);
console.log("sig:"+sig);
und meine Post Form ist die folgende:
<form action="http://my-bucket-name.storage.googleapis.com" method="post" enctype="multipart/form-data">
<input type="text" name="key" value="">
<input type="hidden" name="bucket" value="my-bucket-name">
<input type="hidden" name="Content-Type" value="image/jpeg">
<input type="hidden" name="GoogleAccessId" value="[email protected]account.com">
<input type="hidden" name="acl" value="bucket-owner-read">
<input type="hidden" name="success_action_redirect" value="http://www.example.com/success_notification.html">
<input type="hidden" name="policy" value="DONT KNOW WHAT TO PUT HERE">
<input type="hidden" name="signature" value="NEITHER HERE">
<input name="file" type="file">
<input type="submit" value="Upload">
Unabhängig von den Kombinationen, die in der Javascrypt erhalten werden, kann ich nicht herausfinden, was in die Politik und was in die Unterschrift geht, und JA! Ich habe die API gelesen, aber es ist nicht klar, was in diesen 2 Eingaben geht. Ich habe versucht, die Politikeingabe den Wert von PolicyJson64 und von sig ebenso zu setzen. Und ich habe versucht, den Signatureingang den Wert von sig und pemKey zu verwenden.
ich diesen Fehler:
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.
</Message>
<StringToSign>
a/vDHoeJ1jIZibjgLnS/ZfMftmyz8IaISJiVt1b2wDNbDjnSR+0HyEDW9/Lew7ufMjU9xdtX/Uld06IJbeYz3OWGHnH4osJNS614RoDVd7lq2qft+bSCqYPtkagJiUWs9SNOPvuQzISthqloPQOwJ1LLXHYmV52c73OpexAnSR4=
</StringToSign>
</Error>
Was soll ich sagen?
------ ------ UPDATE
Bitte nicht kopieren Paste Dokumentation, die nicht hilft. Bounty Hinzugefügt
könnte es einen Weg mit Google geben; aber es ist sicher komplizierter – Ben