Пытаюсь понять, что на самом деле означает эта ошибка, но она говорит Anonymous caller does not have storage.objects.get access to...
, когда я пытаюсь получить fileData из файла ведра.
app.get('/api/videos', (req, res) => {
const storageBucket = storageClient.bucket(config.video_bucket);
storageBucket.getFiles(function(err, files) {
if (!err) {
let fileArray = [];
files.forEach(function(file) {
const videoAnnotationBucket = storageClient.bucket(config.video_json_bucket);
const videoAnnotationFilename = (file.metadata.name).replace('/', '').replace('.', '') + '.json';
const annotationFile = videoAnnotationBucket.file(videoAnnotationFilename);
// GET ANNONATIONS FOR EACH FILE
annotationFile.get(function(error, fileData) {
if (error) {
console.log('error getting file', error);
}
else {
const remoteJsonUrl = fileData.metadata.mediaLink;
// console.log(fileData.metadata);
request({
url: remoteJsonUrl,
json: true
},
function(jsonReadErr, jsonResp, body) {
console.log('logging body:');
console.log(body);
Ошибка возникает при обратном вызове, и я читаю ошибку через console.log(body)
, что дает мне сообщение об ошибке, указанное выше.
Странно то, что он говорит, что я анонимен, когда делаю gcloud auth login
, а также предоставляю кредиты, когда объявляю storageBucket
как таковой:
const storageClient = storage({
credentials: {
"client_email": "clientEmail",
"private_key": "privateKey",
},
projectId: "projectId"
});
Итак, сразу же, чтобы избежать любых вопросов «вы установили это?», нет, я на самом деле не предоставляю эти значения, я пропустил реальные значения, и мы используем их в другом месте, поэтому я знаю, что они верны.
Мой вопрос: что означает Anonymous caller
? И как я могу это исправить? Как можно думать, что я анонимный, когда я сделал все (на первый взгляд) необходимые вещи для использования API?