2016-10-25 4 views
0

Ich versuche, die Google + -Authentifizierung mit der Google Passport-Strategie zu implementieren und das Zugriffstoken für nachfolgende Anfragen an die Client-Seite (Angular) zurückzugeben. Aber ich bekomme den Fehler auf der Clientseite immer wieder. "XMLHttpRequest kann nicht geladen werden https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur ... = 1094664898379-8u0muh9eme8nnvp95dafuc3rvigu4j9u.apps.googleusercontent.com. Auf der angeforderten Ressource ist kein 'Access-Control-Allow-Origin'-Header vorhanden. Daher ist' http://localhost:3000 'nicht zulässig." das bekomme ich bei der Umsetzung von Google-Strategie zur Authentifizierung in meiner Web-App. Ich benutze Angular Framework auf der Client-Seite und Express auf dem Server.Angular-Express-Google-Strategie für die Google+ Authentifizierung kann Access Token nicht an Angular übergeben

Ich habe auch auf die folgenden früheren Beiträge zur Lösung verwiesen, aber ohne Erfolg. Die angebotenen Lösungen verwenden eine einfache href auf der Client-Seite, aber ich weiß nicht, wie das Zugriffstoken an die Client-Seite übergeben werden kann, um nachfolgende API-Anfragen zu machen. Jede Hilfe wird sehr geschätzt.

Angular/Node/Express/Passport - Issues when connecting to facebook(CORS) Angular/Node/Express/Passport Cross Domain Problems - Enable CORS Passport Facebook Authentication

Antwort

0

Nach viel Sucherei was frustrierend war, war ich endlich in der Lage, dieses Problem zu umgehen, indem Token Strategie für die Authentifizierung mithilfe von Google. Hier authentifiziere ich zuerst den Benutzer auf der Clientseite und authentifiziere dann das Token auf der Serverseite. Das untenstehende Code-Snippet ist für fb, aber dasselbe gilt auch für Google.

app.post('/auth/facebook/accesstoken', 
     passport.authenticate('facebook-token',{session: false}), 
     function (req, res) { 
     // do something with req.user 
     if(req.user){ 
      console.log('fb user authenticated'); 
      res.send(req.user); 
     } 
     else{ 
      console.log('no entry'); 
      res.send(401); 
     } 
     } 
    ); 
+0

Mine ist SPA mit Templating von Angular angetrieben wird. Wenn dies nicht funktioniert hätte, hätte ich am Ende mit href die Pass-Strategie für Google Eide aufgerufen und es schwer gehabt, den authentifizierten Benutzer an die Client-Seite zurückzugeben. Oder ich würde am Ende Server-Template-Engine wie EJS zu diesem Zweck verwenden, meine Architektur kompliziert machen –

Verwandte Themen