首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在登录和注册社交网站之间创建不同的宣誓流程?例如使用passport js的google oauth2.0。

如何在登录和注册社交网站之间创建不同的宣誓流程?例如使用passport js的google oauth2.0。
EN

Stack Overflow用户
提问于 2020-02-01 15:50:07
回答 1查看 28关注 0票数 1

我希望Auth0能够区分社交注册和社交登录。如果新用户在注册之前尝试登录社交网站,AUTH0应该会响应错误,并要求用户先注册。如今,如果用户在没有注册的情况下登录社交网站,AUTH0会将其视为注册。

代码语言:javascript
复制
exports.google_LogIn = function(req, res, next) {
  passport.authenticate("google", {
    scope: ["profile", "email"]
  })(req, res, next);
}
EN

回答 1

Stack Overflow用户

发布于 2020-02-01 16:33:59

您的Passport策略允许您返回用户或错误。

例如,如果您的数据库以前没有见过该用户(使用Mongoose),那么这个Google策略将返回一个错误。

代码语言:javascript
复制
passport.use(new GoogleStrategy({
    clientID: GOOGLE_CLIENT_ID,
    clientSecret: GOOGLE_CLIENT_SECRET,
    callbackURL: "http://www.example.com/auth/google/callback"
  },
  function(accessToken, refreshToken, profile, done) {
       User.findOne({ googleId: profile.id }, function (err, user) {
         if (!user) return done(Error("needs signup"), null)
         return done(err, user)
       });
  }
));

在回调路径中,您可以给Passport一个failureRedirect,以便在出现错误时将用户发送到您的注册页面。

代码语言:javascript
复制
app.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/signUpPage' }),
  function(req, res) {
    res.redirect('/');
  });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60015009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档