sto provando a caricare le immagini in secchi su Google Cloud Storage utilizzando il JSON API, utilizzando il campione Javascript: Api Javascript SampleGoogle Cloud Storage JavaScript Uso
Sono in grado di caricare le immagini, ma mi chiede di fare il login sul mio account Google.
L'esempio ha un pulsante di autorizzazione, che a mio avviso gestisce le credenziali OAuth.
function checkAuth() {
gapi.auth.authorize({
client_id: clientId,
scope: scopes,
immediate: true
}, handleAuthResult);
}
Il problema è:
voglio per autenticare senza avere il pop-up dello schermo, questo significa che senza effettuare il login con Google. Perché il mio cliente non conosce l'e-mail o la password, voglio che sia automaticamente.
Come posso ottenere questo risultato?
Grazie!
----------------------------- AGGIORNAMENTO ---------------- ----
Quindi seguendo la risposta di Brandon ho fatto la seguente:
ho creato il mio documento di politica e firmato in questo modo:
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);
e la mia forma post è il seguente:
<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">
Non importa le combinazioni ottenute nella javascrypt, non riesco a capire cosa va in politica e cosa in firma, e SÌ! Ho letto l'API ma non è chiaro su cosa vada in questi 2 ingressi .. Ho provato a inserire nell'input della politica il valore di PolicyJson64 e anche di sig. E ho provato a mettere sull'ingresso della firma il valore di sig e pemKey.
ottengo questo errore:
<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>
cosa devo mettere?
------ ------ UPDATE
Si prega di non copia incolla documentazione non sta aiutando. Bounty Added
potrebbe esserci un modo con google; ma è sicuramente più complicato – Ben