首页 > 解决方案 > 同步获取cookies

问题描述

我知道电子正在努力承诺他们的 api 调用,但我认为我同时找到了一个解决方案,但是它并不完全有效。

在我的创建窗口函数中,我有以下...

const mainSession = mainWindow.webContents.session
const getCookies = util.promisify(mainSession.cookies.get)
const cookies = await getCookies({})
console.log(cookies)

我相信它在基于我得到的这个错误解决承诺之前破坏了对象。

 (node:21863) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Object has been destroyed

我需要同步 cookie 的原因是因为我正在为我的canvasFileSync应用程序构建一个登录方法来生成一个长期访问令牌(以验证同步)。该方法必须具有足够的动态性以适用于任何学校的登录页面,在该页面中,它基本上会“不断尝试”制作长期访问令牌,直到成功。

我想你可以想象使这个同步真的会简化这个过程。

任何帮助或指示将不胜感激!

编辑:添加了所有相关代码

const electron = require('electron')
const util = require('util')
const _ = require('lodash')
const request = require('request-promise')
// Module to control application life.
const app = electron.app
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow

const path = require('path')
const url = require('url')

let mainWindow

async function createWindow () {
  // Create the browser window.
  mainWindow = new BrowserWindow({width: 800, height: 600})


  // and load the index.html of the app.
  mainWindow.loadURL('https://suu.instructure.com')

  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
  })

  try {
    const mainSession = mainWindow.webContents.session
    const getCookies = util.promisify(mainSession.cookies.get)
    const cookies = await getCookies({})
    console.log(cookies)
  } catch(err) {
    console.log(err)
  }
}

// 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)

标签: javascriptnode.jselectron

解决方案


推荐阅读