Как получить функцию Google_Application_Credentials в Firebase? - PullRequest
0 голосов
/ 22 октября 2018

В эти дни у меня возникла проблема с учетными данными при использовании функции 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);
        });

};

enter image description here

...