1

GoogleアプリのメールIDでパスポートjsを試しています。gmail.com のメール ID を使用して認証できます。しかし、メール ID が Google アプリ ID (google.com/a/companyname.com) である場合、どうすれば認証できますか。

これは私のコードです

var express = require('express');
var app = express();
var passport = require('passport');
var GoogleStrategy = require('passport-google').Strategy;

passport.use(new GoogleStrategy({
    returnURL: 'http://10.3.0.52:3000/auth/google/return',
    realm: 'http://10.3.0.52:3000/'
},
function(identifier, profile, done) {
    User.findOrCreate({
        openId: identifier
    }, function(err, user) {
        done(err, user);
    });
}
));

app.get('/auth/google', passport.authenticate('google'));

app.get('/auth/google/return', 
    passport.authenticate('google', {
        successRedirect: '/',
        failureRedirect: '/login'
    }));

app.get('/', function(req, res){
    res.writeHead(200);

    res.end("connected");

});

app.listen(process.env.PORT || 3000);
4

3 に答える 3

2

あなたのコードにはいくつかの重要な部分が欠けています:

...
passport.use(...); // this you have

// these are required as well.
app.use(passport.initialize());
app.use(passport.session());

// please read docs for the following two calls
passport.serializeUser(function(user, done) {
  done(null, user);
});

passport.deserializeUser(function(obj, done) {
  done(null, obj);
});
...

これらが整っていれば、Google アプリのアドレスを使用して問題なくログインできます。

編集:ノード 0.8 でのみ動作しますが、ノード 0.10 ではエラーが発生します。passport-google-oauthとにかく使用する方が良い解決策だと思います。そのためには、アプリケーションを Google に登録する必要があります (こちら)。登録後、使用できる GOOGLE_CLIENT_ID と GOOGLE_CLIENT_SECRET コードの両方が提供されます。

于 2013-03-21T10:16:01.400 に答える