电子及;ReactJS,使用BrowserWindow进行GitHub oAuth身份验证

电子及;ReactJS,使用BrowserWindow进行GitHub oAuth身份验证,oauth,callback,github-api,electron,Oauth,Callback,Github Api,Electron,我已经用ReactJs设置了github的电子。因此,我得到了一个浏览器窗口和一个react应用程序,在该窗口中运行良好。我试图实现的是通过GitHub进行身份验证。因此,当用户按下“使用Github登录”按钮时,会打开一个新的浏览器窗口,并转到Github授权应用程序url。我的问题与回调以及如何从回调返回代码有关。我已经用ApacheCordova和InAppBrowser实现了这一点,但它有所不同,因为我能够使用localhost作为回调 到目前为止,我对electron所做的是打开新的浏

我已经用ReactJs设置了github的电子。因此,我得到了一个
浏览器窗口和一个react应用程序,在该窗口中运行良好。我试图实现的是通过GitHub进行身份验证。因此,当用户按下“使用Github登录”按钮时,会打开一个新的浏览器窗口,并转到Github授权应用程序url。我的问题与回调以及如何从回调返回代码有关。我已经用ApacheCordova和InAppBrowser实现了这一点,但它有所不同,因为我能够使用
localhost
作为回调

到目前为止,我对electron所做的是打开新的
浏览器窗口
,但在授权之后,我无法从回调中获取代码

var authWindow=newbrowserWindow({宽度:800,高度:600,显示:true,'始终在顶部:true});
var githubUrl=https://github.com/login/oauth/authorize?';
var authuurl=githubUrl+'client\u id='+options.client\u id+'&scope='+options.scope;
authWindow.loadUrl(authUrl);
authWindow.SetVisibleOnAllWorkSpace(true);
authWindow.setResizeable(false);
authWindow.addListener('page-title-updated',函数(流){
控制台日志(“已加载”);
log(JSON.stringify(stream));
console.log(流);
var url=(typeof stream.url!=“未定义”?stream.url:stream.originalEvent.url),
原始代码=/code=([^&]*)/.exec(stream.url)| | null,
代码=(原始代码和原始代码.length>1)?原始代码[1]:空,
error=/\?error=(.+)$/.exec(strean.url);
如果(代码| |错误){
authWindow.close();
}
//如果回调中有代码,则继续从github获取令牌
if(代码){
//请求令牌(代码);
}else if(错误){
警报(“Oops!无法使用Github对您进行日志身份验证。”);
}
});

我正在做
console.log(JSON.stringify(stream))
我得到了
{}
,所以它必须要做
事件监听器
?有什么想法或更好的方法吗?

所以我缺少的是正确的
事件。正确的方法是:

//构建OAuth同意页URL
var authWindow=newbrowserWindow({width:800,height:600,show:false,'node integration':false});
var githubUrl=https://github.com/login/oauth/authorize?';
var authuurl=githubUrl+'client_id='+options.client_id+'&scope='+options.scopes;
authWindow.loadUrl(authUrl);
authWindow.show();
//处理来自GitHub的响应
authWindow.webContents.on('did-get-redirect-request',函数(事件、旧URL、新URL){
var raw_code=/code=([^&]*)/.exec(newUrl)| | null,
代码=(原始代码和原始代码.length>1)?原始代码[1]:空,
error=/\?error=(.+)$/.exec(newUrl);
如果(代码| |错误){
//如果发现代码或错误,请关闭浏览器
authWindow.close();
}
//如果回调中有代码,则继续从github获取令牌
if(代码){
requestGithubToken(选项、代码);
}else if(错误){
警报(“哎呀!出现了问题,我们无法让您使用Github登录。请再试一次。”);
}
});
//关闭时重置authWindow
authWindow.on('close',function(){
authWindow=null;
},假);

我还写了一篇教程,介绍了完整的实现,可以在

上找到,谢谢,节省了我很多时间。但是,在源代码中硬编码客户机机密是否安全?毕竟,每个人都可以检查客户机的源代码。