节点反应Google登录

时间:2016-10-18 19:42:14

标签: node.js reactjs passport.js google-authentication passport-google-oauth

我一直在学习反应和节点,并一直在尝试使用谷歌身份验证。我相信我的前端工作正常,因为我可以获得一个访问令牌,但我似乎无法通过它的节点端完成身份验证。这是我的React代码。

export default class GoogleLoginComponent extends Component { 

    responseGoogle(response){
        var id_token = response.getAuthResponse().id_token;
        var googlePlus = '101603157010265563225'
       console.log({accessToken: id_token});

        //axios.get('oauth',id_token)
    }

    render(){
        return(
      <GoogleLogin
        clientId="115435392551-qamvp0loln91e4d2uoat8pnki4f705o6.apps.googleusercontent.com"
        buttonText="Login"
        onSuccess={this.responseGoogle.bind(this)}
        onFailure={this.responseGoogle.bind(this)}
      />
      )
    }
}

这将为我成功打印出id_token。我至少相信我的问题(但我知道的是)在服务器端。在谷歌我设置oauth作为回调地址。谷歌会打电话给oauth,还是我必须这样做?当我尝试自己做的时候,我得到了一大堆错误。这是服务器端代码。

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

passport.use(new GoogleStrategy({
    clientID:     "115435392551-qamvp0loln91e4d2uoat8pnki4f705o6.apps.googleusercontent.com",
    clientSecret: "_9tCI3_e-oKFwz1kFkxvRKMM",
    callbackURL: "http://localhost:3000/oauth",
    passReqToCallback   : true
  },
  function(accessToken, refreshToken, profile, done) {
    User.findOrCreate({ googleId: profile.id }, function (err, user) {
      return done(err, user);
    });
  }
));

app.get( '/oauth', 
    passport.authenticate( 'google', { 
        successRedirect: 'success.html',
        failureRedirect: 'fail.html'
    })

        );

任何想法都将不胜感激。

0 个答案:

没有答案