2017-05-20 13 views
0

我是電子新手,我目前正試圖實現一個需要回調URI的OAuth2.0 API。網址回調需要有效的網址(https://myserver.com/sucess)。所以我試過這個代碼片段,但不起作用。如何在電子中集成OAuth2.0登錄

// Your GitHub Applications Credentials 
var options = { 
    client_id: 'your_client_id', 
    client_secret: 'your_client_secret', 
    scopes: ["user:email", "notifications"] // Scopes limit access for OAuth tokens. 
}; 


app.on('ready',() => { 

// Build the OAuth consent page URL 
var authWindow = new BrowserWindow({ width: 800, height: 600, show: false, 'node-integration': false }); 
var githubUrl = 'https://github.com/login/oauth/authorize?'; 
var authUrl = githubUrl + 'client_id=' + options.client_id + '&scope=' + options.scopes; 
authWindow.loadURL(authUrl); 
authWindow.show(); 

function handleCallback (url) { 
console.log(url); 

} 

// Handle the response from GitHub - See Update from 4/12/2015 

authWindow.webContents.on('will-navigate', function (event, url) { 
    handleCallback(url); 
}); 

authWindow.webContents.on('did-get-redirect-request', function (event, oldUrl, newUrl) { 
    handleCallback(newUrl); 
}); 

// Reset the authWindow on close 
authWindow.on('close', function() { 
    authWindow = null; 
}, false); 
}); 

另外,我用角js路線,但也不工作。

所以我想知道是否有一種方法來運行服務器內的電子應用程序從URL提供應用程序(https://localhost:3000),如果是這樣將如何影響應用程序在打包和分發時的行爲,我的意思是應用程序將運行從同一端口 ...任何建議將有助於我如何解決這個問題。謝謝

回答

1

上週我有同樣的問題,我需要將我的電子應用程序與使用OAuth協議形式的vkontakte api集成。你可以做什麼: 1)你啓動本地節點的http服務器,可能與我分開的過程。 2)您通過oauth鏈接請求代碼並將redirect uri設置爲http://127.0.0.1:8000/,由於某種原因https://localhost對我無效。 3)在主流程中,您等待帶有服務器代碼的消息,在服務器上實現相應的邏輯(當您收到請求並在其中的代碼通過process.send發送迴帶有代碼的父消息時) 4)您從主服務器請求訪問令牌過程中,你不應該改變redirect_uri。你再次從你的服務器獲得響應。 5)你得到access_token,你殺了服務器...... 但是,當我做了所有這些我讀他們的文檔,直到結束,有人說,獨立的應用程序,如我的桌面可以通過「隱式流」更容易的方式接收令牌,並且只需一次呼叫即可獲得令牌。希望我的經驗可以推斷出你的問題。祝你好運!