невозможно получить доступ к конечной точке http базы Firebase - PullRequest
0 голосов
/ 23 июня 2019

Я пишу функцию firebase и пытаюсь сделать ее доступной в качестве конечной точки HTTP.Но когда я пытаюсь получить доступ, я получаю сообщение об ошибке «Ваш клиент не имеет разрешения на получение URL / getDetails с этого сервера».

const functions = require('firebase-functions');

const cors = require('cors');

var express = require('express')
var app = express();


'use strict';
app.use(cors);
app.get('/getDetails', function (req, res) {

res.writeHead(200);
var jsonObj = {
    fName: 'Karthik',
    lName: 'Mannepalli'
};
res.end(JSON.stringify(jsonObj));
});

exports.app = functions.https.onRequest(app);

Я ожидаю вывод {"fName": "Karthik", "lName ":" Mannepalli "}, но я получаю сообщение Error: Forbidden

Но следующий код дает мне правильный вывод.В приведенном ниже коде я не использую экспресс

exports.getDetails = functions.https.onRequest(async (req, res) => {
const original = req.query.text;
res.writeHead(200);
var jsonObj = {
    fName: 'Karthik',
    lName: 'Mannepalli'
};
res.end(JSON.stringify(jsonObj));
});

Ответы [ 2 ]

1 голос
/ 23 июня 2019

См. https://firebase.google.com/docs/functions/http-events.

    exports.date = functions.https.onRequest((req, res) => {
      // ...
    });

Например, URL для вызова date () выглядит следующим образом:

https://us-central1-<project-id>.cloudfunctions.net/date

    const express = require('express');
    const cors = require('cors');

    const app = express();

    // Automatically allow cross-origin requests
    app.use(cors({ origin: true }));

    // Add middleware to authenticate requests
    app.use(myMiddleware);

    // build multiple CRUD interfaces:
    app.get('/:id', (req, res) => res.send(Widgets.getById(req.params.id)));
    app.post('/', (req, res) => res.send(Widgets.create()));
    app.put('/:id', (req, res) => res.send(Widgets.update(req.params.id, req.body)));
    app.delete('/:id', (req, res) => res.send(Widgets.delete(req.params.id)));
    app.get('/', (req, res) => res.send(Widgets.list()));

    // Expose Express API as a single Cloud Function:
    exports.widgets = functions.https.onRequest(app);

Например, URL для вызова метода получения в приведенном выше примере приложения Express выглядит следующим образом:

https://us-central1-<project-id>.cloudfunctions.net/widgets/<id>

Так что в случае exports.app = functions.https.onRequest(app);, получить URL-адрес /app/getDetails. Не /getDetails.

А в случае exports.getDetails = functions.https.onRequest(async (req, res), получить URL-адрес /getDetails.

0 голосов
/ 23 июня 2019

Код вашей облачной функции мне не совсем знаком. Я не уверен, какой учебник или документацию вы используете, но все должно быть так просто ...

const functions = require('firebase-functions');

exports.SomeFunction = functions.https.onRequest((req, res) => {
   //Your function code
   res.status(200).end();
});

Попробуйте этот код и сообщите мне, если появятся какие-либо ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...