В эти дни у меня возникла проблема с учетными данными при использовании функции Google Firebase - Google Cloud pub / sub.
Я хочу опубликовать в (Аккаунт B) google pub / sub в функции Firebase (мой аккаунт).
Я уже установил учетные данные переменной среды (учетной записи B).(как это $env.GOOGLE_APPLICATION_CREDENTIALS = '[PATN]/abc.json'
).
И затем он работает на локальном сервере (firebase serve)
Но когда он развернут на функции firebase (firebase deploy
), он не работает.
Код ниже.кто-нибудь может помочь?
var express = require("express")
const PubSub = require('@google-cloud/pubsub');
const projectId = 'PracticeTEST'
const pubsub = new PubSub({
projectId: projectId,
keyFilename: 'D:\aaddbbcc-c28f37a8774b.json'
});
exports.REST_PUT = function (req, res) {
res.status(403).send('Forbidden!')
};
exports.REST_POST = function (req, res) {
//let data = Buffer.from(XMLparsing(req), 'base64').toString('utf-8');
var data = Buffer.from(XMLparsing(req));
var deviceEUI = data.slice(0, 24)
var Container = data.slice(25)
console.log('data : ' + data)
console.log('deviceEUI : ' + deviceEUI)
console.log('Container : ' + Container)
console.log('BEFORE CREDENTIALS-TEST 10 ')
console.log('CREDENTIALS: ' + process.env.GOOGLE_APPLICATION_CREDENTIALS);
console.log('AFTER CREDENTIALS')
publish(Container, deviceEUI)
res.status(200).send('200 OK')
}
exports.REST_GET = function (req, res) {
res.send("Hello from Express on Firebase!")
};
function publish(_container, _deviceEUI) {
var deviceEUI = String(_deviceEUI)
console.log('Publish !! :) ')
var attribute = {
deviceId: deviceEUI,
deviceRegistryId: 'deviceid',
deviceRegistryLocation: 'asia-east1',
projectId: 'PracticeTEST'
};
pubsub
.topic('projects/PracticeTEST/topics/PracticeTEST')
.publisher()
.publish(_container, attribute)
.then(results => {
const topic = results[0];
console.log('Topic ${topic.name} created.');
})
.catch(err => {
console.error('ERROR:', err);
});
};