Ich versuche die Authentifizierung von pass.js in einer Sails.js
App mithilfe der Google OAuth2.0-Strategie zu implementieren. Ich habe überlegt, sails-generate-auth
und sails-auth
zu verwenden, aber sie werden nicht mehr unterstützt. Ich habe auch Waterlock
in Betracht gezogen, aber es funktioniert nur mit den lokalen, Twitter und Facebook Strategien.Was ist der Grund für den InternalOAuthError in meiner Implementierung von sails.js pass.js?
Die folgende Funktion google()
wird aufgerufen, wenn der Benutzer die Schaltfläche "Login mit Google +" drückt. Das erwartete Verhalten ist, dass der Benutzer dann zu einer Google-Seite weitergeleitet wird, wo er aufgefordert wird, sich zu authentifizieren. Tatsächlich wird der folgende Fehler in der markierten Zeile protokolliert. Das Benutzerobjekt ist zu diesem Zeitpunkt nicht definiert.
InternalOAuthError: Failed to obtain request token (status: 307 data: <HTML>
<HEAD>
<TITLE>Temporary Redirect</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000">
<H1>Temporary Redirect</H1>
The document has moved <A HREF="https://accounts.google.com/OAuthGetRequestToken">here</A>.
</BODY>
</HTML>
)
Die unten Funktion ist in den AuthController
gelegen und wird nach dem Klicken auf die ‚Login mit Google+‘ Taste aufgerufen.
google(request, response) {
const google = sails.config.oauth.google;
passport.use(new GoogleStrategy({
consumerKey: MY_KEY,
consumerSecret: MY_SECRET,
callbackURL: 'http://localhost:1337/auth/callback/google',
}, (token, tokenSecret, profile, done) => {
//Verify callback: Never appears to get called.
User.findOrCreate({ providerId: profile.id, provider: 'Google' }).then((user) => {
request.session.me = user;
return done(user);
}).catch(error => {
sails.log('Failed to log in using Google: ' + error);
});
}
));
passport.authenticate('google', {
failureRedirect: '/login',
scope: [
'profile',
],
}, function(error, user) {
//Gets called, but user is undefined.
if (error) {
sails.log('Err: ' + error); //<== Error gets logged here.
}
request.logIn(user, function(error) {
if (error) {
sails.log('err: ' + error);
response.view('500');
return;
}
res.redirect('/');
});
})(request, response);
},
Sonstige Informationen: Pass in config/policies.js
initialisiert wird:
'*': [
passport.initialize(),
passport.session(),
],
Meine Frage: Was ist die wahrscheinliche Ursache des Fehlers erhalte ich?