抛出新的TypeError('OAuth2Strategy需要一个clientID选项'); }

时间:2018-06-08 03:28:35

标签: node.js socket.io

这是该怎么做的错误。我创建了一个socket.io聊天应用程序。

这是一个使用nodejs.socket.io和package.json作为 -

的聊天应用程序

的package.json

"dependencies": {
    "body-parser": "~1.15.1",
    "connect-flash": "^0.1.1",
    "connect-mongo": "^1.3.2",
    "cookie-parser": "^1.4.3",
    "debug": "~2.3.2",
    "escape-html": "^1.0.3",
    "express": "~4.14.0",
    "express-session": "^1.14.2",
    "hbs": "~4.0.0",
    "mongoose": "^4.6.8",
    "morgan": "~1.7.0",
    "passport": "^0.3.2",
    "passport-facebook": "^2.1.1",
    "passport.socketio": "^3.7.0",
    "serve-favicon": "~2.3.0",
    "shortid": "^2.2.6",
    "socket.io": "^1.5.1",
    "twemoji": "^2.2.0"
  },
  "devDependencies": {
    "babel-preset-es2015": "^6.18.0",
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-babel": "^6.1.2",
    "gulp-clean-css": "^2.0.13",
    "gulp-htmlmin": "^3.0.0",
    "gulp-imagemin": "^3.1.1",
    "gulp-sass": "*",
    "gulp-uglify": "^2.0.0"
  }
}
C:\Users\AAKASH\Desktop\Follower-Github\Chat-app-all-F-2\Babble-master\B
abble-master\node_modules\passport-oauth2\lib\strategy.js:82            
  if (!options.clientID) { throw new TypeError('OAuth2Strategy requires 
a clientID option'); }                                                  
                           ^                                            

TypeError: OAuth2Strategy requires a clientID option                    
    at Strategy.OAuth2Strategy (C:\Users\AAKASH\Desktop\Follower-Github\
Chat-app-all-F-2\Babble-master\Babble-master\node_modules\passport-oauth
2\lib\strategy.js:82:34)                                                
    at new Strategy (C:\Users\AAKASH\Desktop\Follower-Github\Chat-app-al
l-F-2\Babble-master\Babble-master\node_modules\passport-facebook\lib\str
ategy.js:54:18)                                                         
    at Object.<anonymous> (C:\Users\AAKASH\Desktop\Follower-Github\Chat-
app-all-F-2\Babble-master\Babble-master\config\passport.js:11:14)       
    at Module._compile (module.js:660:30)                               
    at Object.Module._extensions..js (module.js:671:10)                 
    at Module.load (module.js:573:32)                                   
    at tryModuleLoad (module.js:513:12)                                 
    at Function.Module._load (module.js:505:3)                          
    at Module.require (module.js:604:17)                                
    at require (internal/module.js:11:18)                               
    at Object.<anonymous> (C:\Users\AAKASH\Desktop\Follower-Github\Chat-
app-all-F-2\Babble-master\Babble-master\routes\index.js:9:14)           
    at Module._compile (module.js:660:30)                               
    at Object.Module._extensions..js (module.js:671:10)                 
    at Module.load (module.js:573:32)                                   
    at tryModuleLoad (module.js:513:12)                                 
    at Function.Module._load (module.js:505:3)                          
    at Module.require (module.js:604:17)                                
    at require (internal/module.js:11:18)                               
    at Object.<anonymous> (C:\Users\AAKASH\Desktop\Follower-Github\Chat-
app-all-F-2\Babble-master\Babble-master\app.js:23:16)                   
    at Module._compile (module.js:660:30)                               
    at Object.Module._extensions..js (module.js:671:10)                 
    at Module.load (module.js:573:32)                                   
npm ERR! code ELIFECYCLE                                                
npm ERR! errno 1                                                        
npm ERR! babble@0.1.0 start: `node ./bin/www`                           
npm ERR! Exit status 1                                                  
npm ERR!                                                                
npm ERR! Failed at the babble@0.1.0 start script.                       
npm ERR! This is probably not a problem with npm. There is likely additi
onal logging output above.                                              

npm ERR! A complete log of this run can be found in:                    
npm ERR!     C:\Users\AAKASH\AppData\Roaming\npm-cache\_logs\2018-06-08T
03_18_29_207Z-debug.log                                                 

以下是没用的.......
这是该怎么做的错误。我创建了一个socket.io聊天应用程序。 这是一个使用nodejs.socket.io和package.json的聊天应用程序。这是错误即将发生的事情。我创建了一个socket.io聊天应用程序。 这是一个使用nodejs.socket.io和package.json的聊天应用程序。这是错误即将发生的事情。我创建了一个socket.io聊天应用程序。 这是一个使用nodejs.socket.io和package.json

的聊天应用程序

12 个答案:

答案 0 :(得分:1)

昨天我有同样的错误。错误是

TypeError: OAuth2Strategy requires a clientID option

我将客户端ID重命名为clientID,而不是clientId

passport.use(new FacebookStrategy({
  clientID: FACEBOOK_CLIENT_ID,       // previously was           clientId
  clientSecret: FACEBOOK_CLIENT_SECRET,
  callbackURL: FACEBOOK_CALLBACK_URL,
  profileFields: ['id', 'email', 'first_name', 'last_name'],
},
  UserControllers.facebookCallback,
));

答案 1 :(得分:1)

我遇到了同样的问题。然后我将clientId和clientSecret保存在.env文件中

GOOGLE_CLIENT_ID = xxxxxxxxxxxxxxxxxx
GOOGLE_CLIENT_SECRET = xxxxxxxxxxxxxxxxxx

passport.js

passport.use(
  new GoogleStrategy(
    {
      clientID: process.env.GOOGLE_CLIENT_ID,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET,
      callbackURL: "/auth/google/callback",
    },
    (accessToken, refreshToken, profile, done) => {
      console.log(profile);
      done(null, profile);
    }
  )
);

user.js

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

router.get('/auth/google/callback', 
  passport.authenticate('google', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/article');
  });

答案 2 :(得分:1)

请确保您的应用可以正确读取您的“clientID”变量。尝试读取您的变量“clientID”,将值打印到控制台。就我而言,结果是:

console.log(`${clientID}`);
undefined

我忘记包含模块了

require('dotenv').config()

所以我没有读取实际的 clientID 值。 希望能帮到你。

答案 3 :(得分:0)

您的依赖项没有帮助。您需要将代码发布到创建Passport Facebook Strategy对象的位置。 (我会XXXX列出您的个人密码/密钥/ ClientId)

我刚才也有这个错误,这就是为什么我在这个问题上。我解决了我的问题,它可能会帮助您了解我的问题是如何出现的。

将安全代码/密钥/所有内容放置在暴露于野外的源代码库中是非常不好的做法。好的做法是将代码保存在文件中,并将其包含在内部版本中作为参考,并使用其中的密钥,但不要将其检入存储库中,而是手动将其从开发计算机复制到计算机中。在更大的环境中,您可能只是将其放在公共网络驱动器上。或者更有可能将其存储在非托管的源代码存储库中。

就我而言,我是从主要的开发计算机(笔记本电脑)跳到速度更快的台式机。我已经几个月没来桌面了,只是做了一个简单的检查,然后编译/运行。我得到这个错误。我忘记了复制密钥文件来运行dev。 (有趣的是,我绝对可以运行构建并推送到实时服务器,因为它在服务器上的产品密钥文件上运行。)

如果这不是您的特定情况,那么您需要发布代码(如果需要,请随时向我发信)或查看有关如何制定FacebookStrategy的代码,问题就在那里。您可能只是忘了在通话中包含您的Facebook ClientID。

干杯,祝你好运!

答案 4 :(得分:0)

我在Google的Passport for GoogleOAuth2中遇到了类似的情况。正是同一错误最终导致了微不足道的错误。在我的代码中的某个地方,插入了cliendID键的一部分(在我的情况下,它位于keys.js下),而不是export S ,我有一个错字-导出。

module.exports = require('./something');

修复该问题。希望有人会发现它有用。

答案 5 :(得分:0)

如果您将多个策略放置在同一文件“ passport.js”下,请尝试为不同的策略创建一个不同的文件,然后在其他一切都没问题并且代码仍然无效的情况下尝试执行此错误,那么也会发生此错误。 / p>

答案 6 :(得分:0)

最近,我遇到了同样的问题,后来我意识到我忘记了要求.env配置。

错误

TypeError: OAuth2Strategy requires a clientID option

修复

npm i dotenv

然后在文件顶部要求它

require(dotenv).config()

此问题是由于服务器不知道必须使用环境变量引起的。

答案 7 :(得分:0)

确保在主文件中正确设置了环境变量。 在您的服务器或 app.js 文件中包含 Passport.js 文件之前添加此项

require('dotenv').config()

答案 8 :(得分:0)

同样的事情发生在我身上,然后我补充了

require('dotenv').config()

在标题中,一切正常。

我从 .env 文件中读取了我的客户端 ID。

答案 9 :(得分:0)

显然这个错误说,它找不到 clientID 值,它应该来自 .env 定义。

使用 nodejs 并经常使用 for equal :而不是 .env 中预期的 = 也会导致此问题。

所以...clientID=12345..... 对我来说还可以。

答案 10 :(得分:0)

要遵循的步骤:

  1. 登录您的 Heroku 帐户。在个人标签下,点击您当前使用的应用程序。

  2. 转到设置。

  3. 选择“显示配置变量”。

  4. 添加您为本地环境输入的所有键值对。

  5. 保存值。

  6. 重新部署您的应用程序。

经过几个小时的努力,终于帮到了我。

答案 11 :(得分:-1)

consumer更改为client,解决了该问题。

  passport.use(
    new GoogleStrategy(
      {
        clientID: GOOGLE_CLIENT_ID,
        clientSecret: GOOGLE_CLIENT_SECRET,
        callbackURL: "http://www.example.com/auth/google/callback"
      },
      function(token, tokenSecret, profile, done) {
        authUser(profile, done)
      }
    )
  );