ElectronでAuth0を使う
electron-quick-start
electron-quick-start で準備します。
electron/electron-quick-start: Clone to try a simple Electron app
# Clone this repository
git clone https://github.com/electron/electron-quick-start
# Go into the repository
cd electron-quick-start
# Install dependencies
npm install
# Run the app
npm start
まずこれでフォルダを整えましょう。
express を仕込む
expressインストール
npm i express
morgan helmet インストール(Auth0用)
npm i morgan helmet
public フォルダ作成
publicフォルダを作ります。
public/index.html をとりあえずつくる
public/index.html も作ります。
<html>
<head>
<title>Hello Server!</title>
</head>
<body>
<p>Hello, World!</p>
</body>
</html>
ソースはひとまずこちらで。
main.js 書き換え
// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')
const path = require('path')
// express setting
const express = require('express');
const appExpress = express();
appExpress.use(express.static(__dirname + '/public'));
appExpress.listen(3000);
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow
function createWindow () {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
// and load the index.html of the app.
// mainWindow.loadFile('index.html')
// ログインページにアクセスして、画面に表示する
mainWindow.loadURL("http://localhost:3000/" );
// Open the DevTools.
// mainWindow.webContents.openDevTools()
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
})
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)
// Quit when all windows are closed.
app.on('window-all-closed', function () {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') app.quit()
})
app.on('activate', function () {
// On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) createWindow()
})
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
起動してみる
npm start
こちらでうまく動くか調べてみましょう。
このように表示されたら、Expressが組み込まれました。
Auth0の設定取り込み
サンプルファイル自動作成で 素のJavaScriptのVanillaJSログインファイル一式を持っておきます。
基本設定はしておく
サンプルファイル自動作成で指示される、Application Settings の Allowed Callback URLs、Allowed Web Origins、Allowed Logout URLsでの http://localhost:3000 の許可設定は忘れないようにしておきましょう。
auth_config.json 移植
Electron側の最上部のフォルダに、 Auth0サンプル側の auth_config.json
を移動します。
繰り返しますがElectron側の最上部のフォルダに入れます。
publicフォルダに、Auth0サンプル側のpublicフォルダにあるcss,images,jsフォルダを移植
Electron側のpublicフォルダに、Auth0サンプル側のpublicフォルダにある css,images,jsフォルダ
を移植します。
public/index.html は上書き
Electron側の public/index.html
はAuth0サンプル側のpublicフォルダにある index.html
を上書きします。
起動します
npm start
こちらで起動します。
このように起動します。
注意:現状、LINEログインがおすすめです。
現状、LINEログインがおすすめです。
このようにGoogleアカウントは、ElectronのChromniumアクセスのせいか、弾かれてしまいます。
Auth0利用でなくても、ほかのコンテンツでElectronブラウザでGoogleログイン表示すると同じ画面になるので、ElectronのChromniumブラウザ関連ぽい。
Discussion