web-dev-qa-db-fra.com

Utilisation de Firebase avec Electron

J'essaie d'utiliser Firebase avec Electron . Lorsque je l’installe comme sur une page Web, cela ne fonctionne pas, car les pages Electron sont hébergées localement et n’ont pas de hostname. C'est l'erreur que je reçois ...

Uncaught Error: This domain is not authorized for OAuth operations for your Firebase project. Edit the list of authorized domains from the Firebase console.

Je ne peux pas ajouter de domaine autorisé vide (ou générique) à la console Firebase, je suis donc bloqué. Quelqu'un a-t-il une idée sur la façon de contourner ce problème?

edit: Voici le code que j'utilise, c'est juste le passe-partout standard, rien de plus ...

<script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script>
<script>
  var config = {
    apiKey: "AIzaSyBvmmPB0_Oddc-02cUj3Ntt3wi8jSxxxx",
    authDomain: "xxxxx-d24ad.firebaseapp.com",
    databaseURL: "https://xxxxx-d24ad.firebaseio.com",
    storageBucket: "",
  };
  firebase.initializeApp(config);
</script>
14
DaveJ

Pour l'instant, vous pouvez supprimer cette erreur en supprimant la ligne authDomain de votre configuration. authDomain est nécessaire pour les opérations Auth signInWithPopup/signInWithRedirect, mais tout le reste devrait fonctionner.

Une version de la bibliothèque qui renvoie cette erreur uniquement lorsque vous essayez réellement d'effectuer un signInWithPopup/Redirect est en cours.

5
Channing Huang

Je ne sais pas si c'est la meilleure solution mais c'est une solution de contournement.

créer un fichier server.js avec un simple serveur express

"server.js"

var express = require('express');
var http = require('http');
var path = require('path');

var appServer = express();
appServer.use(express.static(path.join(__dirname, '')));

appServer.get('*', (req, res) => {
    res.sendFile(__dirname + 'index.html');
});

http.createServer(appServer).listen(3007, function() {
    console.log('Express server listening on port');
});

Dans votre main.js (electron-main-js-file)

En haut du fichier main.js, démarrez le serveur de noeud

require('./server');

et changez le "win.loadURL"

win.loadURL('http://localhost:3007');

J'ai brouillé votre projet et mis en œuvre, l'erreur de Firebase a disparu, mais jQuery n'est pas défini, je pense que vous pouvez y remédier.

https://github.com/diegoddox/sad-electron-firebase-error

3
diegoddox

Vous pouvez utiliser GitHub, Twitter, Facebook, fournisseur Google de firebase auth avec electron en utilisant la méthode de connexion manuelle et la méthode firebase auth signInWithCredential.

https://firebase.google.com/docs/auth/web/github-auth#handle_the_sign-in_flow_manually

J'ai créé une bibliothèque utile pour ces cas. 

https://github.com/mironal/electron-oauth-helper#firebase-auth-integration

// Github manually flow example.

const { OAuth2Provider } = require("electron-oauth-helper")

const config = { /* oauth config. please see example/main/config.example.js.  */}
const provider = new OAuth2Provider(config)
provider.perform()
  .then(resp => {
    const query = querystring.parse(resp)
    const credential = firebase.auth.GithubAuthProvider.credential(query.access_token)
    firebase.auth().signInWithCredential(credential)
    .then(user => {
        console.log(user)
    })
    .catch(error => console.error(error))
  })
  .catch(error => console.error(error))
1
mironal