Как исправить TypeError при использовании signInWithCredential на node.js? [РЕДАКТИРОВАТЬ: ошибка в Firebase 6.2.2] - PullRequest
1 голос
/ 22 июня 2019

Я пытаюсь войти в firebase с помощью токена Google Id, так как я разрабатываю приложение, которое будет работать на Raspberry Pi, но при попытке войти в систему с использованием полученного токена происходит сбой Firebase при использовании signInWithCredential. Вот мой минимальный воспроизводимый пример

var firebase = require("firebase/app");
require("firebase/auth");

const firebaseConfig = {
    ...
};
  // Initialize Firebase

firebase.initializeApp(firebaseConfig);

const id_token = "A_GOOGLE_ID_TOKEN";

var credential = firebase.auth.GoogleAuthProvider.credential(id_token);
firebase.auth().signInWithCredential(credential);

и вылетает с

TypeError: this.f is not a constructor
    at ai.a (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:188:361)
    at yh (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:171:191)
    at bi.o (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:193:175)
    at ji (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:191:239)
    at C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:197:181
    at new C (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:18:736)
    at pi (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:197:161)
    at C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:209:203
    at e.g (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:22:101)
    at Kb (C:\Dev\Crashing\node_modules\@firebase\auth\dist\auth.js:25:195)

Я пробовал это с несколькими действительными токенами ID, но кажется, что часть на самом деле не сломана, само удостоверение кажется нормальным, потому что signInWithCredential умирает так же, даже когда я передаю произвольную строку как id_token.

Что я делаю не так? Или это может быть проблема с самим Firebase JS SDK?

Я работаю на Windows 10, вер. 1809, работает Node v10.15.3 и firebase JS SDK 6.2.2 (пакет npm firebase).

РЕДАКТИРОВАТЬ: Я пробовал Firebase JS SDK версии 6.2.0, и код работал как ожидалось! В версии 6.2.2 есть ошибка.

Ответы [ 2 ]

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

Firebase JS SDK 6.2.3 был только что выпущен сегодня, и он исправляет эту ошибку: https://firebase.google.com/support/release-notes/js#authentication

Похоже, это git commit исправляет это: https://github.com/firebase/firebase-js-sdk/commit/728f4f54b4589c07a2d474deb94328a332c8fe39

Я проверил это с помощью этого мокко-теста:

const firebase = require('../../firebaseApp')
const chai = require('chai')

describe('firebase javascript sdk', () => {

  // This unit test verifies that the error message is as expected,
  // and not the error "this.f is not a constructor", which was caused
  // by a bug in version 6.2.1, and fixed in versin 6.2.3.
  // /9248978/kak-ispravit-typeerror-pri-ispolzovanii-signinwithcredential-na-node-js-redaktirovat-oshibka-v-firebase-6-2-2
  it('should be able to checkActionCode', () => {
    return firebase.auth().checkActionCode('xyz')
      .catch(error => {
        // /9248978/kak-ispravit-typeerror-pri-ispolzovanii-signinwithcredential-na-node-js-redaktirovat-oshibka-v-firebase-6-2-2
        chai.assert.equal(error.message,
          "The action code is invalid. This can happen if the code is malformed, expired, or has already been used.")
      })
  })
})

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

Клиентские SDK Firebase обычно не работают с nodejs. Аутентификация Firebase в значительной степени зависит от правильной работы в веб-браузере.

Если вы используете узел, вы можете рассмотреть возможность использования Firebase Admin SDK для доступа к вашему проекту без необходимости входа в систему.

...