Нет информации об аутентификации для эмулируемой локальной облачной функции - PullRequest
1 голос
/ 31 марта 2020

У меня есть следующие настройки: Vue Webapp с хостингом, облачными функциями и Firestore.

При развертывании приложения в Google Cloud все работает. Когда я эмулирую функции и хостинг, используя firebase emulators:start --only functions,hosting, я могу использовать размещенное приложение и облачные функции, но информация аутентификации из context.auth не определена.

Это работает в облаке, но не в эмуляторе. Есть идеи или решения? Примечание. Я также установил учетные данные администратора, как описано в Документах . Редактировать: У меня есть коллега, который успешно запускает эмулятор на windows, включая информацию для аутентификации, но я не могу найти никаких отличий в настройке?!

export default class AuthGuard {

private readonly authentication: object;

public constructor(context: any) {
    this.authentication = context.auth;
}

public isAuthenticated(): boolean {
    console.log('this.authentication', this.authentication ); // this in undefined

    if (this.authentication === undefined) {
        throw new functions.https.HttpsError(
            'unauthenticated',
            'The request requires user authentication',
        );
    }
    return true;
}

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

[Firebaser here] Это ошибка в эмуляторах, и она была исправлена ​​в версии 7.16.2: https://github.com/firebase/firebase-tools/releases/tag/v7.16.2

Чтобы обновить, просто переустановите Firebase CLI в последняя версия.

1 голос
/ 31 марта 2020

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

Чтобы настроить аутентификацию, выполните следующие действия.

  1. Откройте Панель учетных записей служб Консоли Google Cloud.
  2. Убедитесь, что App Engine выбрана учетная запись службы по умолчанию, и используйте меню параметров справа, чтобы выбрать Создать ключ.
  3. При появлении запроса выберите JSON для типа ключа и нажмите Создать.
  4. Установите Google по умолчанию учетные данные, указывающие на загруженный ключ:

В соответствии с документацией это должно быть полезно для тестирования, так как теперь он будет использовать Admin SDK для тестов. Один из упомянутых примеров - это вызов функции admin.auth().getUserByEmail(email).

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

Я также хотел бы добавить, что согласно официальной документации указывает на то, что локальный эмулятор находится в бета-версии. Так что, возможно, стоит обратиться напрямую в службу поддержки Firebase через бесплатную поддержку .

Дайте мне знать, помогла ли вам эта информация!

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