Добавление пользовательских утверждений возвращает ошибку auth / invalid-email: адрес электронной почты неправильно отформатирован с помощью функций Firebase - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь добавить пользовательские заявки в свой проект vue, чтобы я мог изменить то, что пользователь может видеть / делать. Как это работает, у меня есть поле ввода, в которое я введу электронное письмо от пользователя, и оно добавит к нему претензию администратора. Когда я пошел проверить его, я получил объект с ошибкой «errorInfo: Object {code:« auth / invalid-email », сообщение:« Адрес электронной почты неправильно отформатирован ».}

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

Я отправляю электронное письмо test@test.com, которое у меня есть в качестве примера, и я проверилvue.js devtools, и я передаю строку с test@test.com

Вот мой код функции index.js

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

exports.addAdminRole = functions.https.onCall(async (data, context) => {
  //get user and add custom claim (admin)
  try {
    const user = await admin.auth().getUserByEmail(data.email);
    await admin.auth().setCustomUserClaims(user.uid, {
      admin: true
    });
    return {
      message: `Success! has been made admin`
    };
  } catch (err) {
    return err;
  }
});

А вот мой компонент vue, где явызов функции

<template>
  <div class="home">
    <h3>Welcome to Site</h3>

    <h3>Add user to admin</h3>
    <div class="row">
      <form @submit.prevent="addAdmin()" class="col s12">
        <div class="row">
          <div class="input-field col s12">
            <input type="email" v-model="email" required />
            <label>Email</label>
          </div>
        </div>
        <button type="submit" class="btn">Submit</button>
        <router-link to="/members" class="btn grey">Cancel</router-link>
      </form>
    </div>
  </div>
</template>

<script>
import { db, fc } from "../data/firebaseInit";
export default {
  name: "home",
  data() {
    return {
      email: null
    };
  },
  methods: {
    addAdmin() {
      const addAdminRole = fc.httpsCallable("addAdminRole");
      addAdminRole(this.email).then(result => {
        console.log(result);
      });
    }
  }
};
</script>

1 Ответ

1 голос
/ 08 ноября 2019

Вам нужно вызывать функцию Callable Cloud с объектом, а не с «простой» строкой JavaScript.

Таким образом, ваша проблема решится следующим образом:

  methods: {
    addAdmin() {
      const addAdminRole = fnct.httpsCallable("addAdminRole");
      addAdminRole( { email: this.email } ).then(result => {
        console.log(result);
      });
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...