0

Ich baue eine Chrome-Erweiterung, die mit einem Node.js/Restify-Webdienst interagieren wird, den ich auch baue. Ich benutzte pass.js, um ein paar API-Endpunkte zu erstellen, die Nutzer treffen und mit Facebook authentifiziert werden können. Als ich jedoch das Chrome-Extension-Piece zum Laufen brachte, merkte ich, dass es beim Versuch, meine Facebook-Authentifizierungs-Endpunkte über Ajax anzufordern, alle möglichen CORS-Probleme gab.Wie authentifiziere ich mich am besten in einer Chrome-Erweiterung mit Facebook?

Nach der Untersuchung des Problems online, es sieht aus wie die meisten Menschen Facebook auth alle auf der Client-Seite. Jetzt denke ich, vielleicht schreibe ich die Erweiterung neu, um clientseitige Facebook-Authentifizierung zu verwenden und alles andere (nicht-Facebook) über meine Restify API zu behalten.

My Facebook Auth Endpunkte wie folgt aussehen:

server.get('/facebook_login/callback', auth.authenticate({ 
    failureRedirect: '/error', 
    scope: [ 
    auth.fbPermissions.email, 
    auth.fbPermissions.publicProfile 
    ] 
}), function(req, res, next) { 
    res.redirect('/', next); 
}); 

server.get('/facebook_login', auth.authenticate({ 
    failureRedirect: '/error', 
    scope: [ 
    auth.fbPermissions.email, 
    auth.fbPermissions.publicProfile 
    ] 
})); 

Und die einzige in der Verlängerung JavaScript-Code ist dies:

document.addEventListener('DOMContentLoaded', function() { 
    window.open("http://localhost:8080/facebook_login"); 
}); 

Wenn jemand gearbeitet hat eine dieser Methoden bekommen, lassen Sie mich wissen, . Jede Hilfe wird geschätzt!

+1

_ "Ich erkannte, dass es alle Arten von CORS-Problemen gab" _ Sie müssen klären, was Sie damit meinen. CORS ist normalerweise kein Problem für Erweiterungen. Überprüfen Sie auch 'chrome.identity'. – Xan

+0

@Xan nachdem ich meinen Code geändert habe, um die CORS-Fehler zu reproduzieren, merkte ich, dass ich sie nicht mehr bekommen habe, solange ich die Login-URLs in einem neuen Fenster geöffnet habe. Auch "chrome.identity" sieht nützlich aus, also vielen Dank für diesen Rat. –

Antwort

0

Ich konnte das funktionieren, indem ich meine facebook_login Seite in einem neuen Fenster öffne. Sieht so aus, als würde ich bei der serverseitigen Facebook-Anmeldung bleiben.

+1

Wise: clientseitige Anmeldung hat es einfacher, API-Schlüssel zu extrahieren. – Xan

Verwandte Themen