无法使用节点和护照通过Google获取用户个人资料登录

时间:2018-09-18 12:09:24

标签: node.js google-api passport.js google-plus passport-google-oauth2

我正在尝试使用节点和程序包password-google-oauth20通过Google登录。但是出现错误-“ InternalOAuthError:无法获取用户配置文件”。已经启用Google Plus API。我正在使用我的公司gmail ID来访问它。一切都存储在mongodb中,但没有获取return json作为响应。这是我的password-setup.js代码。

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20');
const keys = require('./keys');
const User = require('../api/models/user');
const mongoose   = require('mongoose');

passport.use(
new GoogleStrategy({
callbackURL: '/users/google/redirect',
clientID: keys.google.clientID,
clientSecret: keys.google.clientSecret
}, (accessToken, refreshToken, profile, done)=>
{

  User.findOne({googleid : profile.id})
  .exec()
  .then(doc=>{
      if(doc)
      {
        //already exist user
        console.log("User exist : "+doc)
      } else{
        const user = new User({
          _id : new mongoose.Types.ObjectId(),
          name : profile.displayName,
          googleid : profile.id
          });
          user.
          save().
          then(result=>{
              console.log("myerror1" +result);
          })
      }
  })
  .catch(err=>{
      console.log("error1" + err);
  });
  console.log(accessToken);
  console.log(profile);
  })
 )

这是路线代码

router.get('/google', passport.authenticate('google', {
scope: ['profile']
}));

router.get('/google/redirect', passport.authenticate('google'), (req, res)=> 
{
res.send(req.user);
});

我在google.redirect请求上出错。

  

要求用户

显示我InternalOAuthError

2 个答案:

答案 0 :(得分:1)

您是否已从Google选中了此documentation?可能会有帮助。

还可以在.Strategy的末尾添加const GoogleStrategy = require('passport-google-oauth20');并查看是否有帮助(或者是否收到其他错误消息?

const GoogleStrategy = require('passport-google-oauth20').Strategy;

答案 1 :(得分:0)

我遇到了同样的问题,并为此解决了这个问题:

在package.json中,将“ passport”值更改为“ ^ 0.4.0”,将“ passport-google-oauth”更改为“ ^ 2.0.0”。再次运行“ npm install”。

相关问题