как вызвать вызываемые функции firebase с локального хоста? - PullRequest
0 голосов
/ 09 января 2020

Я получаю эту ошибку:

enter image description here

всякий раз, когда вызывается эта облачная функция:

      const makeAdmin = firebase.functions().httpsCallable("makeAdmin");
      makeAdmin({
        make: "admin"
      })
        .then(response => {
          console.log(response);
        })
        .catch(err => console.error(err));

функция:

const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
const db = admin.firestore();
const auth = admin.auth();

exports.makeAdmin = functions.https.onCall(async (data, context) => {
  try {
    const email = context.auth.token.email || null;
    const user = await auth.getUserByEmail(email);
    await auth.setCustomUserClaims(user.uid, {
      admin: true
    });
    return {
      message: "admin added successfully"
    };
  } catch (error) {
    return error;
  }
});

Я пытался использовать модуль Cors, но не работал.

Ответы [ 2 ]

0 голосов
/ 09 января 2020

Я знаю, что нужно сделать, поскольку я столкнулся с тем же

Для localhost: : нет необходимости устанавливать cors (лучше удалить) Изменить ваши функции / индекс. js со ссылкой на ниже

exports.yourFuncation = functions.https.onRequest((request, response) => {
response.set('Access-Control-Allow-Origin', "*")
/*Your code and response*/})

Для производства: используйте тот же код, но вместо localhost в cors используйте ваш производственный URL

и должны изменить свою базу данных. json из firefunction следующим образом

{
"functions": {
    "predeploy": [
        "npm --prefix \"$RESOURCE_DIR\" run lint"
    ],
    "headers": [{
        "key": "Access-Control-Allow-Origin",
        "value": "https://production.com/*"
    }]
}}

Также вам нужно добавить значения cors в вашу базу данных. json под хостингом

"rewrites": [{
"source": "**",
"destination": "/index.html",
"headers": [{
    "key": "Access-Control-Allow-Origin",
    "value": "https://us-central1-projectname.cloudfunctions.net*"
}]}]}

Изменить вещи, если у вас возникли проблемы, оставить комментарий

0 голосов
/ 09 января 2020

Вам необходимо включить cors, чтобы выполнить этот запрос:

Сначала установите пакет:

npm install cors

Затем импортируйте его:

const cors = require('cors')({origin: true});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...