2017-06-16 1 views
0

Je construis une application de bureau reac/electron avec un login facebook manuel (https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow#dialogresponse).Comment détecter une redirection depuis un URI externe ouvert à partir d'une application de bureau Electron

Avec le clic d'un bouton, j'ouvre en utilisant la méthode shell.openExternal la boîte de dialogue de connexion, mais j'ai besoin de détecter cette redirection, puis lire le jeton d'accès hors de l'URI. Je ne sais pas comment faire cela (réagissez newbee ici).

Quelle devrait être la meilleure approche?

Merci d'avance.

Répondre

0

La bonne réponse est de suivre ce tutoriel: https://competenepal.com/lets-make-a-facebook-login-system-in-electron-that-actually-works/

Je ne devais mettre en œuvre cette partie:

var options = { 
    client_id: '', 
    scopes: "public_profile", 
    redirect_uri: "https://www.facebook.com/connect/login_success.html" 
}; 
var authWindow = new BrowserWindow({ width: 450, height: 300, show: false, 
    parent: mainWindow, modal: true, webPreferences: {nodeIntegration:false} }); 
var facebookAuthURL = "https://www.facebook.com/v2.8/dialog/oauth?client_id=" + options.client_id + "&redirect_uri=" + options.redirect_uri + "&response_type=token,granted_scopes&scope=" + options.scopes + "&display=popup"; 
authWindow.loadURL(facebookAuthURL); 
authWindow.show(); 
authWindow.webContents.on('did-get-redirect-request', function (event, oldUrl, newUrl) { 
    var raw_code = /access_token=([^&]*)/.exec(newUrl) || null; 
    var access_token = (raw_code && raw_code.length > 1) ? raw_code[1] : null; 
    var error = /\?error=(.+)$/.exec(newUrl); 

    if(access_token) { 
    FB.setAccessToken(access_token); 
    FB.api('/me', { fields: ['id', 'name', 'picture.width(800).height(800)'] }, function (res) { 
     console.log('response is:', res); 
    }); 
    authWindow.close(); 
    } 
});