Google OAuth2.0 전략을 사용하여 Sails.js
앱에서 passport.js 인증을 구현하려고합니다. sails-generate-auth
및 sails-auth
을 사용했지만 더 이상 지원되지 않습니다. 나는 또한 Waterlock
을 고려했지만 로컬, 트위터 및 페이 스북 전략에서만 작동합니다.내 sails.js passport.js 구현에서 InternalOAuthError의 원인은 무엇입니까?
아래의 기능은 사용자가 '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(),
],
내 질문 : 내가지고있어 오류의 원인은 무엇입니까?