NodeJS REST-Authentifizierung mit Passport und OAuth2 + soziales Netzwerk

Ich arbeite anREST api usingNodeJS. Zur Authentifizierung habe ich mich für @ entschiedPassport. Ich möchte wirklich RESTful api. Ich muss also Token anstelle von Sitzungen verwenden.

Ich möchte Benutzern erlauben, sich mit Benutzername und Passwort oder über soziale Netzwerke wie Facebook, Google und Twitter anzumelden.

Ich mache mein eigenesOAuth2.0 Server für die Ausgabe vonAccess undRefresh tokens usingoauth2orize Modul. So kann ich jetzt neue Benutzer registrieren und diese dann als Token ausgeben. Ich bin diesem Tutorial gefolgt:

http: //aleksandrov.ws/2013/09/12/restful-api-with-nodejs-plus-mongodb

Benutzer für Route überprüfen:

// api ------------------------------------------------------------------------------------
    app.get('/api/userInfo',
        passport.authenticate('bearer', { session: false }),
        function(req, res) {
            // req.authInfo is set using the `info` argument supplied by
            // `BearerStrategy`.  It is typically used to indicate scope of the token,
            // and used in access control checks.  For illustrative purposes, this
            // example simply returns the scope in the response.
            res.json({ user_id: req.user.userId, name: req.user.username, scope: req.authInfo.scope })
        }
    );

All das funktioniert ganz gut. Leider weiß ich nicht, wie ich die soziale Authentifizierung implementieren soll.

Ich habe dieses Tutorial gelesen:

http://scotch.io/tutorials/javascript/easy-node-authentication-facebook 

Aber in diesem Tutorial machen sie keine wirklich RESTful-API. Ich habe bereits ein Benutzerschema gemäß diesem Tutorial implementiert, in dem Token für lokale Benutzer in getrennten Modellen gespeichert werden.

// define the schema for our user model
var userSchema = mongoose.Schema({
    local: {
        username: {
            type: String,
            unique: true,
            required: true
        },
        hashedPassword: {
            type: String,
            required: true
        },
        created: {
            type: Date,
            default: Date.now
        }
    },
    facebook: {
        id: String,
        token: String,
        email: String,
        name: String
    },
    twitter: {
        id: String,
        token: String,
        displayName: String,
        username: String
    },
    google: {
        id: String,
        token: String,
        email: String,
        name: String
    }
});

Aber jetzt, wie kann ich den Benutzer verifizieren?

passport.authenticate('bearer', { session: false }),

dies verifiziert nur das Inhaber-Token gegenüber meiner Datenbank, aber wie kann ich soziale Token verifizieren? Vermisse ich etwas?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage