2016-06-20 36 views
0

我正在開發與Electron一起運行的Angular App。 Inside Electron我使用的是基於此教程的OAuth http://manos.im/blog/electron-oauth-with-github/用於Angular的電子商店OAuthToken

一切工作正常,我收到來自Electron的main.js內的access_token。要調用我的端點,我需要在我的Angular服務中使用這個令牌。我如何將此令牌傳遞給Angular?

我的Angular App與Wepack捆綁在一起,然後包含在Electron中。

+0

有沒有可能我對main.js裏面令牌寫入到本地存儲然後用角度讀取該令牌?如是。我如何使用webpack寫入本地存儲? – Trafalgar

回答

0

如果我理解正確,主進程中會收到github訪問令牌。如果我誤解了,請告訴我。

這聽起來像你的問題可以改寫,「我如何在主流程和渲染器進程之間共享數據?」。最簡單的方法是通過IPCinter-process communication),它允許您在主要和渲染器進程之間發送消息和數據。 這可能是有用的,以及:https://github.com/electron/electron/blob/master/docs/faq/electron-faq.md#how-to-share-data-between-web-pages

//from the main process 
const ipc = require('electron').ipcMain; 

function githubRequestCallback(response) { 
    window.webContents.send('github-access-token', { 
    token: response.data.token 
    }); 
} 

//in a renderer 
const ipc = require('electron').ipcRenderer; 
ipc.on('github-access-token', (event, {token}) => { 
    console.log('i haz the token', token); 
}); 

如果在渲染器接收的訪問令牌(這篇文章似乎是假設),那麼,你可以在localStorage的設置,我認爲這將是可用在所有渲染器進程中。請注意,localStorage API只能在渲染器進程中使用,因此如果主進程需要獲取它,那麼您可能需要考慮其他方法或僅使用IPC來傳遞它。

另一種選擇是將令牌保存到文件中,例如使用electron-config(將其保留爲JSON),或者如果您有大量數據存儲需求,如LevelDB。主要和渲染器進程可以根據需要讀取/寫入相同的配置文件。周圍的多個進程

戲法數據排序對大多數JS的人一個新的挑戰,我還是想出來自己:)

+0

非常感謝您的幫助。我已經成功地在主流程中集成了ipcMain。不,我正在嘗試將渲染代碼集成到我的Angular2服務中。不幸的是ipcRenderer總是未定義的。你知道我可以如何回收我的角度2服務中的主流程發出的消息嗎? – Trafalgar

+0

@Trafalgar是否使用了像webpack這樣的模塊捆綁軟件?大多數模塊捆綁器重寫'require'。 – ccnokes

+0

是的,我正在使用Webpack。因此,我不知道如何正確包含electron.ipcRenderer – Trafalgar