0

我可以使用 IAM 令牌读取 COS 存储桶中的文件,但无法使用 API 密钥执行相同操作。我在请求标头中设置了以下键:

授权:{api 密钥}

我应该设置其他东西吗?注意我没有使用 HMAC 凭据。下面的代码有两个选项,一个是不记名令牌,另一个是为该 Cos 实例专门为存储桶创建的 api 密钥。

示例代码:

var request = require('request');

//使用不记名令牌

var options = {

uri: 'https://{endpoint}/{bucket name}',
headers: {
'Authorization': 'bearer {token string}',
}
};

//使用api键

var options = {
uri: 'https://{endpoint}/{bucketname}',
headers: {
'Authorization': '{{api key string for cos service id}',
}
};

function callback(error, response, body) {
console.log(error)
console.log(response.statusCode)
if (!error && response.statusCode == 200) {
console.log(body)
}
}

 request(options, callback);
4

2 回答 2

0

只需在https://www.npmjs.com/package/ibm-cos-sdk使用 ibm-cos-sdk npm 库。您只需执行以下操作,您就可以上路了。

var AWS = require('ibm-cos-sdk');
var util = require('util');

var config = {
    endpoint: '<endpoint>',
    apiKeyId: '<api-key>',
    ibmAuthEndpoint: 'https://iam.ng.bluemix.net/oidc/token',
    serviceInstanceId: '<resource-instance-id>',
};

var cos = new AWS.S3(config);
于 2018-03-05T01:24:40.093 回答
0

API 密钥根本不应该在 Authorization 标头中发送。它是一次生成令牌的密钥。正如 AJ Alger 指出的那样,我建议使用一些 SDK(下面提供的列表)来消除冗余工作。重新评估您在使用 Node JS sdk 时遇到的错误,请提供更多详细信息。

于 2018-04-26T15:24:58.757 回答