Firebase Google аутентификация с node js - PullRequest
0 голосов
/ 06 февраля 2020

Я хотел бы добавить кнопку ' Войти через google ' в мое приложение, и я пытаюсь выполнить аутентификацию с помощью firebase в node js. Я не получил ни одного примера с официального сайта firebase, где приведена документация для скрипта java.

, пожалуйста, найдите фрагмент кода ниже:

const firebaseAdmin = require('firebase-admin');
const serviceAccount = require('./SAK.json');
const FirebaseAuth = require('firebaseauth');
const authProvider = new FirebaseAuth("API_KEY");
const authToken = FirebaseAuth.initTokenMiddleware(serviceAccount);

firebaseAdmin.initializeApp({
    credential: firebaseAdmin.credential.cert(serviceAccount)
});

router.get('/loginWithGoogle/', (req,res) => {
    authProvider.loginWithGoogle(authToken, function(err, result) {
    if (err) {
        console.log('err');
    }
    else {
        console.log(result);
    }
});
});

Значение authToken равно нулю Я полагаю. Я получаю следующее сообщение об ошибке:

TypeError: Невозможно прочитать свойство 'trim' null в loginWithProviderID (/workspace/sodiumBackend/node_modules/firebaseauth/dist/providers/social-providers.js:22: 23) в Object.loginWithGoogle (/workspace/sodiumBackend/node_modules/firebaseauth/dist/providers/social-providers.js:57:5) в FirebaseAuth.loginWithGoogle (/ workspace /odiumBackend / node_modules / firebaseauth. js: 61: 25) в router.get (/workspace/sodiumBackend/src/routes/api/user.js:8:18) в Layer.handle [as handle_request] (/ workspace /odiumBackend / node_modules / Экспресс / lib / router / layer. js: 95: 5) на следующем (/workspace/sodiumBackend/node_modules/express/lib/router/route.js:137:13) в Route.dispatch (/ workspace /) odiumBackend / node_modules / express / lib / router / route. js: 112: 3) в Layer.handle [как handle_request] (/workspace/sodiumBackend/node_modules/express/lib/router/layer.js:95: 5)

1 Ответ

1 голос
/ 06 февраля 2020

Привет, Прежде всего, пожалуйста, проверьте документацию «Управление пользователями» в Firebase Admin.

https://firebase.google.com/docs/auth/admin/manage-users

Уведомление метод createUser в firebase

    admin.auth().createUser({
  email: 'user@example.com',
  emailVerified: false,
  phoneNumber: '+11234567890',
  password: 'secretPassword',
  displayName: 'John Doe',
  photoURL: 'http://www.example.com/12345678/photo.png',
  disabled: false
})
  .then(function(userRecord) {
    // See the UserRecord reference doc for the contents of userRecord.
    console.log('Successfully created new user:', userRecord.uid);
  })
  .catch(function(error) {
    console.log('Error creating new user:', error);
  });

"По умолчанию Firebase Authentication генерирует случайный идентификатор пользователя для нового пользователя."

После создания пользователя вы можете создать токен для него

var myTokenToSave;
   admin
        .auth()
        .createCustomToken(userRecord.uid)
        .then(function(customToken) {
          myTokenToSave = customToken;
        });

Затем, в конце концов, аутентифицируйте его

 admin.auth().verifyIdToken(idToken)
  .then(function(decodedToken) {
    let uid = decodedToken.uid;
    // ...
  }).catch(function(error) {
    // Handle error
  });

Надеюсь, это имеет смысл, размещение и использование кода зависит от вашей реализации.

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