Firebase Auth + Electron = сбой? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь заставить Firebase Auth работать с электроном.Я уже работал с iOS и Android и хотел бы использовать то же самое для настольной версии приложения.

В основном я пытаюсь войти в систему через Google. Использование веб-версии firebase заканчиваетсяошибка, из-за которой localhost не был принят для входа. Я попробовал версию кода node.js, но я не могу заставить ее работать.

Google это: https://www.google.com/search?q=firebase+auth+electron

И вы увидите все, что я пробовал, и все вопросы, связанные с переполнением стека, которые я просматривал.Некоторые люди говорят, что они работают, но я не нашел рабочих примеров.Это безнадежное дело или кто-то может указать мне правильное направление?

У многих людей такая же проблема, но нет ответов.

Ответы [ 2 ]

0 голосов
/ 02 августа 2018

вам придется установить nativeWindowOpen на true внутри webPreferences в ваших основных окнах.Вот так:

mainWindow = new BrowserWindow(
        {
            width: 1280,
            height: 720,
            webPreferences: {
                nodeIntegration: false,
                preload: path.join(__dirname, 'preload.js'),
                nativeWindowOpen: true
            }
        }
);
0 голосов
/ 29 мая 2018

Один из способов выполнить эту работу - запустить локальный сервер, который обслуживает страницу, которую вы хотите отобразить.Затем в вашем электронном окне загрузите URL этого локального сервера.

Поскольку библиотеки Firebase будут жаловаться, если загружены непосредственно в электронное окно, но вы можете обойти его, используя локальный сервер, например так:

import {
    app,
    BrowserWindow
} from 'electron'

import ex from 'express'
import path from 'path'
const express = ex()
let win
const port = 12345

const appPath = app.getAppPath()
express.use(require('express').static(path.join(appPath, '/')))
express.get('/', (_, res) => res.sendFile(path.join(appPath, '/index.html')))
express.listen(port, () => console.log('Running on ' + port))

function getWindow () {
    if (win === undefined) {
        // Create the browser window.
        win = new BrowserWindow({
            frame: false,
            transparent: true,
            alwaysOnTop: true,
            width: 1280,
            height: 768,
            center: true
        })
        win.loadURL('http://localhost:' + port)
    }
    return win
}

app.on('ready', () => {
    getWindow().show()
})

Приведенный выше код будет вашим index.js который вы бы запустить, когда вы запускаете электрон.Затем в index.html, который обслуживается через локальный веб-сервер, вы загружаете веб-библиотеки Firebase.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">

    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
    <title>Example</title>
</head>
<body>
    <script src="/__/firebase/6.3.0/firebase-app.js"></script>
    <script src="/__/firebase/6.3.0/firebase-auth.js"></script>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...