首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google云存储Javascript使用

Google云存储Javascript使用
EN

Stack Overflow用户
提问于 2015-03-30 19:21:40
回答 1查看 2.6K关注 0票数 7

我试图使用JSON API将图片上传到Google上的存储桶中,使用Javascript示例:Api Javascript示例

我可以上传图片,但它要求我登录我的谷歌帐户。

示例有一个授权按钮,我理解它管理OAuth凭据。

代码语言:javascript
运行
AI代码解释
复制
    function checkAuth() {
  gapi.auth.authorize({
    client_id: clientId,
    scope: scopes,
    immediate: true
  }, handleAuthResult);
}

问题是:

我想验证没有弹出式屏幕,这意味着不登录谷歌。因为我的客户不知道电子邮件或密码,我希望它是自动的。

我怎样才能做到这一点?

谢谢!

因此,在布兰登的回答之后,我做了以下工作:

我制作了我的政策文件,并签署如下:

代码语言:javascript
运行
AI代码解释
复制
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);

我的邮寄表格如下:

代码语言:javascript
运行
AI代码解释
复制
  <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="884257827820-so77htet9tafrcjjp83m7api9lh12qsn@developer.gserviceaccount.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">

不管在javascrypt中获得了什么组合,我似乎都不知道什么是策略,什么是签名,是的!我读过API,但不清楚这两个输入中的内容是什么。我也尝试过将策略输入,PolicyJson64和sig的值。我也尝试过将sig和pemKey的值放在签名输入上。

我知道这个错误:

代码语言:javascript
运行
AI代码解释
复制
<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>

我该放什么?

-更新

请不要复制没有帮助的粘贴文档。赏金

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-07 18:25:40

由于没有一种简单的上传图片的方法(2014年),我最终使用了,它甚至附带了一个NodeJS示例代码。简单易用。

http://aws.amazon.com/es/developers/getting-started/nodejs/

克隆样本:

代码语言:javascript
运行
AI代码解释
复制
git clone https://github.com/awslabs/aws-nodejs-sample.git

安装:

代码语言:javascript
运行
AI代码解释
复制
npm install

运行:

代码语言:javascript
运行
AI代码解释
复制
node sample.js

该示例附带了桶用法,它们甚至将一个文件存储在桶中。这样就能成功了。请确保更改凭据:

代码语言:javascript
运行
AI代码解释
复制
aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

干杯!

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29360045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档