2

我一直在一起学习 react 和 node,并一直在尝试使用 google auth 来实现。我相信我的前端工作正常,因为我可以取回访问令牌,但我似乎无法使用它的节点端完成身份验证。这是我的反应代码。

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。我至少相信我的问题(但我知道什么)在服务器端。在 google 中,我将 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'
    })

        );

任何想法将不胜感激。

4

0 回答 0