Ich versuche eine Chrome-Erweiterung einzurichten, die chrome.identity.getAuthToken
verwendet, um das Authentifizierungs-Token des angemeldeten Benutzers abzurufen und anschließend mit einem Express-Server unter Verwendung von Passport und zu authentifizieren Strategie.Google Auth-Token von Chrome Extension mit PassportJS gibt 401 Unauthorized zurück
getAuthToken
gibt mir das Token, aber wenn es an meinen Server gesendet wird, bekomme ich einen Fehler.
Ich bin ziemlich neu in Passport und Token basierte Autorisierung im Allgemeinen, so bin ich mir nicht sicher, ob ich einen Fehler gemacht oder missverstanden habe, wie es funktionieren soll.
Meine Chrome-Erweiterung tut dies:
chrome.identity.getAuthToken({"interactive": true}, function(token){
var url = "http://localhost:30000/auth/chrome";
var x = new XMLHttpRequest();
x.open("GET", url);
x.setRequestHeader('Authorization', "Bearer " + token);
x.send();
});
und das Token in meinen Rückruf korrekt übergeben wird.
ich mein Express Server und Passport-Strategie wie folgt auf:
import * as express from "express";
import * as passport from "passport";
const GoogleTokenStrategy = require("passport-google-token").Strategy;
// set up Express and Passport...
passport.use(new GoogleTokenStrategy({
clientID: --client id--,
clientSecret: --client secret--
}, (accessToken, refreshToken, profile, done) => {
return done(null, profile);
}));
app.get('/auth/chrome', passport.authenticate("google-token"), (req, res) => {
res.send(req.user);
});
Die Client-ID und Geheimnis aus den Anmeldeinformationen kommen Ich habe in der Google API-Manager einzurichten:
Wenn Jeder kann mich darauf hinweisen, was ich sonst noch tun oder was ich falsch mache, es wäre sehr geschätzt.
wo Sie Redirect-URL angegeben haben? –