#javascript #node.js #angular #electron
#javascript #node.js #angular #electron
Вопрос:
Я сгенерировал приложение Angular 7, которое работает по адресуhttp://localhost:4200 У меня есть приложение в Node JS, которое отвечает за аутентификацию пользователя на Facebook, запущенное по адресу http://localhost:3000
там перенаправление обратного вызова работает корректно
index.js (узел)
//facebook
const FACEBOOK_APP_ID = 'xxx';
const FACEBOOK_APP_SECRET = 'xxx';
passport.use(new FacebookStrategy({
clientID: FACEBOOK_APP_ID,
clientSecret: FACEBOOK_APP_SECRET,
callbackURL: "/auth/facebook/callback"
},
function (accessToken, refreshToken, profile, cb) {
return cb(null, profile, accessToken);
}
));
app.get('/auth/facebook',
passport.authenticate('facebook'));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', {
failureRedirect: 'http://localhost:4200/login'
}),
function (req, res) {
res.redirect('http://localhost:4200/main' req.authInfo);
});
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`server en port ${port}`)
});
app.modules.ts
const appRoutes: Routes = [{
path: '',
component: LoginComponent,
},
{
path: 'login',
component: LoginComponent,
},
{
path: 'main/:token',
component: MainComponent,
},
{
path: '',
redirectTo: 'login',
pathMatch: 'full'
},
{
path: '**',
component: Error404Component
},
];
main.js (electron)
const url = require('url');
const path = require('path');
const fs = require('fs');
const {
app,
BrowserWindow,
Menu,
dialog
} = require('electron');
const openAboutWindow = require('about-window').default;
let win;
let menu;
const application_menu = [{
label: 'Archivo',
submenu: [{
label: 'Salir',
accelerator: 'Command Q',
click: () => {
app.quit();
}
}, ]
},
{
label: 'Configuración',
submenu: [{
label: 'Carpetas',
accelerator: 'CommandOrControl o',
click: () => {
openFolderDialog()
}
}]
},
{
label: 'Ayuda',
submenu: [{
label: 'Documentación',
click() {
require('electron').shell.openExternal('https://electronjs.org')
}
},
]
}
];
function createWindow() {
let nd = require('./api/index.js');
menu = Menu.buildFromTemplate(application_menu);
Menu.setApplicationMenu(menu);
win = new BrowserWindow({
width: 800,
height: 600,
show: false,
icon: __dirname '/icons/batman.ico'
});
win.loadFile('./dist/UI/index.html');
win.webContents.openDevTools()
win.once('ready-to-show', () => {
win.show()
})
win.on('closed', function () {
win = null;
});
};
app.on('ready', createWindow);
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
});
app.on('activate', () => {
if (win === null) {
createWindow()
}
});
При попытке включить это в Electron я могу вызвать функции узла, но я не могу перенаправить данные на angular
Я пробовал с file: /// и это тоже не работает, также не выдает ошибку
Я ценю вашу помощь
Комментарии:
1. Как вы отображаете содержимое angular в electron? Можете ли вы добавить образец? Используете ли вы webview? Или вы интегрируете angular в electron?
Ответ №1:
Я думаю, вы должны вернуть ответ JSON и принять решение в приложении electron на основе JSON, прошла ли авторизация или нет. Потому что отправной точкой angular, которая его обслуживает, является приложение electron, и я думаю, что вы не можете перенаправить таким образом.
Комментарии:
1. Внешняя переадресация CORS-запроса не разрешена На запрос CORS сервер ответил HTTP-перенаправлением на URL-адрес, отличающийся от исходного запроса, что запрещено во время CORS-запросов. Чтобы устранить проблему, обновите свой код, чтобы использовать новый URL, указанный в перенаправлении, тем самым избегая перенаправления. Читать дальше