Amazon web services &引用;配置中缺少凭据";从Amazon S3 JavaScript SDK服务器返回
我一直在遵循的样板代码,让CORS上传工作与我的S3帐户 我创建了一个Facebook应用程序,更改了S3存储桶的CORS配置XML,并在JavaScript代码中填入了相应的变量。但是当我试图通过我的网页上传文件时,我得到了Amazon web services &引用;配置中缺少凭据";从Amazon S3 JavaScript SDK服务器返回,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我一直在遵循的样板代码,让CORS上传工作与我的S3帐户 我创建了一个Facebook应用程序,更改了S3存储桶的CORS配置XML,并在JavaScript代码中填入了相应的变量。但是当我试图通过我的网页上传文件时,我得到了错误:config响应中缺少凭据 有人能告诉我调试这个的正确方向吗 我的JS: var appId = '999943416325248'; var roleArn = 'arn:aws:iam::458182047307:role/s3-test'; var bucket
错误:config
响应中缺少凭据
有人能告诉我调试这个的正确方向吗
我的JS:
var appId = '999943416325248';
var roleArn = 'arn:aws:iam::458182047307:role/s3-test';
var bucketName = 'my-bucket';
var fbUserId;
var bucket = new AWS.S3({
params: {
Bucket: bucketName
}
});
var fileChooser = document.getElementById('video-file-input');
var button = document.getElementById('submit-button');
var results = document.getElementById('results');
button.addEventListener('click', function () {
var file = fileChooser.files[0];
if(file){
results.innerHTML = '';
//Object key will be facebook-USERID#/FILE_NAME
var objKey = 'facebook-' + fbUserId + '/' + file.name;
var params = {
Key: objKey,
ContentType: file.type,
Body: file,
ACL: 'public-read'
};
bucket.putObject(params, function (err, data) {
if(err){
results.innerHTML = 'ERROR: ' + err;
}
else{
listObjs();
}
});
}
else{
results.innerHTML = 'Nothing to upload.';
}
}, false);
function listObjs() {
var prefix = 'facebook-' + fbUserId;
bucket.listObjects({
Prefix: prefix
}, function (err, data) {
if(err){
results.innerHTML = 'ERROR: ' + err;
}
else{
var objKeys = "";
data.Contents.forEach(function (obj) {
objKeys += obj.Key + "<br>";
});
results.innerHTML = objKeys;
}
});
}
/*!
* Login to your application using Facebook.
* Uses the Facebook SDK for JavaScript available here:
* https://developers.facebook.com/docs/javascript/gettingstarted/
*/
window.fbAsyncInit = function () {
FB.init({
appId: appId
});
FB.login(function (response) {
bucket.config.credentials = new AWS.WebIdentityCredentials({
ProviderId: 'graph.facebook.com',
RoleArn: roleArn,
WebIdentityToken: response.authResponse.accessToken
});
fbUserId = response.authResponse.userID;
button.style.display = 'block';
});
};
// Load the Facebook SDK asynchronously
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if(d.getElementById(id)){
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
var-appId='99943416325248';
var ROLERN='arn:aws:iam::458182047307:role/s3测试';
var bucketName=‘我的桶’;
var-fbUserId;
var bucket=新的AWS.S3({
参数:{
Bucket:bucketName
}
});
var fileChooser=document.getElementById('video-file-input');
var-button=document.getElementById('submit-button');
var results=document.getElementById('results');
按钮。addEventListener('click',函数(){
var file=fileChooser.files[0];
如果(文件){
results.innerHTML='';
//对象键将是facebook用户ID#/文件名
var objKey='facebook-'+fbUserId+'/'+file.name;
变量参数={
关键:奥比基,
ContentType:file.type,
正文:文件,
ACL:“公共读取”
};
bucket.putObject(参数、函数(错误、数据){
如果(错误){
results.innerHTML='ERROR:'+err;
}
否则{
listObjs();
}
});
}
否则{
results.innerHTML='无需上传';
}
},假);
函数listObjs(){
var前缀='facebook-'+fbUserId;
bucket.listObjects({
前缀:前缀
},函数(错误,数据){
如果(错误){
results.innerHTML='ERROR:'+err;
}
否则{
var objKeys=“”;
数据内容forEach(函数(obj){
objKeys+=obj.Key+“
”;
});
results.innerHTML=objKeys;
}
});
}
/*!
*使用Facebook登录您的应用程序。
*使用此处提供的Facebook SDK for JavaScript:
* https://developers.facebook.com/docs/javascript/gettingstarted/
*/
window.fbAsyninit=函数(){
FB.init({
appId:appId
});
FB.登录(功能(响应){
bucket.config.credentials=new AWS.WebIdentityCredentials({
ProviderId:'graph.facebook.com',
罗兰:罗兰,
WebIdentityToken:response.authResponse.accessToken
});
fbUserId=response.authResponse.userID;
button.style.display='block';
});
};
//异步加载Facebook SDK
(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){
回来
}
js=d.createElement;
js.id=id;
js.src=“//connect.facebook.net/en_US/all.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
结果是Chrome阻止了我域名上的弹出窗口,因此Facebook身份验证无法处理。一旦我允许从域中弹出窗口,一切都按预期进行