Google OAuth2.0戦略を使用してSails.js
アプリでpassport.js認証を実装しようとしています。私はsails-generate-auth
とsails-auth
を使用すると考えましたが、サポートされなくなりました。私はWaterlock
も考慮しましたが、ローカル、Twitter、Facebook戦略でのみ動作します。sails.jsのpassport.js実装でInternalOAuthErrorの原因は何ですか?
下記のgoogle()
機能は、ユーザーが「google +でログイン」ボタンを押したときに呼び出されます。予想される動作は、ユーザーがGoogleページにリダイレクトされ、そこで自分自身を認証するよう促されることです。実際には、次のエラーがマークされた行に記録されます。その時点でユーザーオブジェクトは定義されていません。
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>
)
以下の機能はAuthController
にあり、[Google+でログイン]ボタンをクリックすると呼び出されます。
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);
},
その他情報:パスポートはconfig/policies.js
に初期化されます:
'*': [
passport.initialize(),
passport.session(),
],
は私の質問:私は取得しています、エラーの可能性の高い原因は何ですか?