Я настроил Electron github с ReactJs. Итак, я получил BrowserWindow
и приложение для реагирования, которое прекрасно работает в этом окне. Чего я пытаюсь добиться, так это пройти аутентификацию с помощью GitHub. Поэтому, когда пользователь нажимает кнопку Login with Github
, открывается новый BrowserWindow
и переходит к URL-адресу приложения авторизации github. Проблема, с которой я столкнулся, связана с обратным вызовом и тем, как я получу код, возвращаемый из обратного вызова. Я сделал это с Apache Cordova и InAppBrowser
, но все было по-другому, поскольку я мог использовать localhost
в качестве обратного вызова.
Что я сделал до сих пор с электроном, так это открыл новый BrowserWindow
, но после авторизации я не могу получить код из обратного вызова.
var authWindow = new BrowserWindow({ width: 800, height: 600, show: true, 'always-on-top': true });
var githubUrl = 'https://github.com/login/oauth/authorize?';
var authUrl = githubUrl + 'client_id=' + options.client_id + '&scope=' + options.scope;
authWindow.loadUrl(authUrl);
authWindow.setVisibleOnAllWorkspaces(true);
authWindow.setResizable(false);
authWindow.addListener('page-title-updated', function(stream) {
console.log("LOADED");
console.log(JSON.stringify(stream));
console.log(stream);
var url = (typeof stream.url !== 'undefined' ? stream.url : stream.originalEvent.url),
raw_code = /code=([^&]*)/.exec(stream.url) || null,
code = (raw_code && raw_code.length > 1) ? raw_code[1] : null,
error = /\?error=(.+)$/.exec(strean.url);
if (code || error) {
authWindow.close();
}
// If there is a code in the callback, proceed to get token from github
if (code) {
// requestToken(code);
} else if (error) {
alert("Oops! Couldn't log authenticate you with using Github.");
}
});
Где я делаю console.log(JSON.stringify(stream));
, я получаю {}
, так что это что-то, что должно делать eventListener
? Любые идеи или лучшие подходы?