未分类

electron实现qq快捷登录的方法示例_javascript技巧_脚本之家

31 3月 , 2020  

当使用 api(如 webContents.loadUWranglerL 和 webContents.back)以编制程序方式来运营导航的时候,那几个事件将不会发出.

回去的header里面是三个数组 这种写法真是坑爹啊! 还要去写多个
header.token[0] 这种写法有一些不希罕 不过困难!

did-get-response-details 事件表明:

演示

import {ipcMain, BrowserWindow, shell} from 'electron'ipcMain.on('qqLogin',  => { const loginWindow = new BrowserWindow({ width: 750, height: 450, resizable: false, minimizable: false, maximizable: false, webPreferences: { devTools: false, } }); loginWindow.setMenu; loginWindow.loadURL; loginWindow.webContents.on('new-window',  => { event.preventDefault(); shell.openExternal; const content = loginWindow.webContents; content.on('will-navigate',  => { content.on('did-get-response-details', (e, status, url, originalURL, httpResponseCode, requestMethod, referrer, header) => { if (httpResponseCode === 200) { event.sender.send; loginWindow.close;

status,newURL,originalURL,httpResponseCode,requestMethod,referrer,headers
多少个参数 最终大家只须要看清httpResponseCode 是200的时候
header内部的参数从主进度再次回到给渲染进度大约的数据是这么的:

授权后是不是中标很难去看清

  qq登录  export default { name: "home", mounted() { this.$electron.ipcRenderer.on => { console.log let httpCode = data.request_code[0]; if  { alert }, methods: { qqLogin() { //请求服务器获取授权页面和参数 this.$http.get .then => { if (result.data.status === 1) { this.$electron.ipcRenderer.send('qqLogin', {url: result.data.data}); } }) .catch() }, } }

唯独要细心这里服务端重回的数据顾客端不能够分析 大家可以选拔:findInPage
去查询再次回到的开始和结果!

闲话休说 说qq登入!

以上参数中 msg request_code token为自定义参数 是服务器代码生成的!

后边本来想不写那么些效果的,结果顾客死活要qq登陆!
实在不能就写了,顺便写个篇章!

后端是运用PHP达成的 没什么难度,首要的就是顾客端的一些甩卖!

1: 展开qq授权页面点击页面中的链接会又开拓三个页面! …..2:
授权之后是还是不是中标很难去决断

取得这两个之后大家就可以写代码啦!

如上正是本文的全体内容,希望对大家的上学抱有利于,也可望大家不吝指教脚本之家。

赶尽杀绝展开qq授权页面点击页面中的链接会又开垦叁个窗口的主题素材 使用webContents
的 new-window 事件 协会暗中认可事件 调用Shell利用私下认可浏览器展开就可以了!

 loginWindow.webContents.on('new-window',  => { event.preventDefault(); shell.openExternal;
access-control-allow-credentials:["true"]access-control-allow-headers:["token,Origin, X-Requested-With, Content-Type, Accept"]access-control-allow-methods:["POST,GET,DELETE,PUT"]cache-control:["no-store, no-cache, must-revalidate"]connection:["Keep-Alive"]content-type:["application/json; charset=utf-8"]date:["Sun, 21 Oct 2018 14:02:20 GMT"]expires:["Thu, 19 Nov 1981 08:52:00 GMT"]keep-alive:["timeout=5, max=100"]request_code:["1"]msg:["登录成功"]token:["xxxxxxxx"]pragma:["no-cache"]server:["Apache/2.4.23  OpenSSL/1.0.2j mod_fcgid/2.3.9"]set-cookie:["PHPSESSID=6b0esq5jd8vloess2c96ove86s; path=/; HttpOnly"]transfer-encoding:["chunked"]x-powered-by:["PHP/7.2.1"]

在点击授权之后方授助权页面会跳转到大家服务器的叁个回调地址 在里头做三个操作
例如获取顾客token杂乱无章的! 之后将扭转的token归来给顾客端!

那此中的响应速度相当的慢 里面超级多文书档案都十分久了
参数也许有失效的!!!

渲染进程获得header中的token根据
token收获客户音讯那事后就轻易的很了!!!

 loginWindow.webContents.on('will-navigate',  => { content.on('did-get-response-details', (e, status, url, originalURL, httpResponseCode, requestMethod, referrer, header) => { if (httpResponseCode === 200) { event.sender.send; // loginWindow.close;

难点解决

点击a链接会张开叁个新窗口

可是大家不能够一直利用他 要在点击授权之后再去选拔她

因为 did-get-response-details 事件再次回到了:

当关于央浼能源的详细消息可用的时候发出事件. status 标志了
socket链接来下载财富.

放置qq登入开关

它也不会在页内跳转产生, 比方点击锚链接或更新 window.location.hash.使用
did-navigate-in-page 事件能够达到指标

推荐介绍咱们去w3c去看文书档案 相比全 并且速度比较快文书档案也正如新:

当顾客或 page 想要以前导航的时候发惹祸件.它可在当 window.location
对象退换或客户点击 page 中的链接的时候爆发.

可是脑海中有四个设法正是,electron便是一个肖似于浏览器相仿,既然是浏览器那必然能够阻碍链接的点击
也能够料定状态!就去啃文档了!!!

will-navigate事件表达:

到这些标题后笔者就想到叁个词 那正是 Response 和 code 然后就去探求了嘛
结果在 webContents找到了! did-get-redirect-request 事件 !


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图