Node.js:OAuth2Strategy需要一个clientID选项

时间:2019-05-23 08:50:49

标签: javascript node.js

我正在设置由另一个开发人员创建的MERN堆栈项目,但出现错误:

node_modules/passport-oauth2/lib/strategy.js:82
[0]   if (!options.clientID) { throw new TypeError('OAuth2Strategy requires a clientID option'); }
[0]                            ^
[0] 
[0] TypeError: OAuth2Strategy requires a clientID option

如果我理解正确,.env文件中应该有clientID,项目中没有这样的文件,对吗?

4 个答案:

答案 0 :(得分:0)

对我来说,我做了类似的事情

passport.use(
    new FacebookStrategy(
        {
            clientID: config.FACEBOOK_APP_ID,
            clientSecret: config.FACEBOOK_CONSUMER_SECRET,
            callbackURL: config.FACEBOOK_REDIRECT_URL,
            profileFields: ['id', 'displayName', 'email']
        },

但是我忘记将FACEBOOK_APP_ID添加到我的配置文件中。只要确保您传递的clientId不为null或未定义

答案 1 :(得分:0)

问题是 config.FACEBOOK_CLIENT_ID ,而不是 config.FACEBOOK_APP_ID

错误策略:

passport.use(
    new FacebookStrategy(
        {
            clientID: config.FACEBOOK_CLIENT_ID,
            clientSecret: config.FACEBOOK_CONSUMER_SECRET,
            callbackURL: config.FACEBOOK_REDIRECT_URL,
            profileFields: ['id', 'displayName', 'email']
        },

正确的策略:

passport.use(
    new FacebookStrategy(
        {
            clientID: config.FACEBOOK_APP_ID,
            clientSecret: config.FACEBOOK_CONSUMER_SECRET,
            callbackURL: config.FACEBOOK_REDIRECT_URL,
            profileFields: ['id', 'displayName', 'email']
        },

答案 2 :(得分:0)

<块引用>

一定要 npm install dotenv,并添加 require('dotenv').config();到 app.js 文件的顶部。

虽然@ColsonRice 的回答并不是我收到上述错误 OAuth2Strategy requires a clientID option 的确切原因,但它确实为我指明了正确的方向。在尝试让我的 NodeJs express 服务器的 Typescript 版本在 Heroku 上工作时,我已经改变了(10 次提交),我的 package.json 启动脚本来自

"start": "node -r dotenv/config ./dist/index.js",

"start": "node dist/index.js",

更改开发启动以使用带有 dotenv/config 选项的替代启动命令解决了我的问题。我的 package.json 脚本部分的最后 4 行如下:

"dev": "nodemon --exec npm run restart",
"restart": "rimraf dist && npm run build && npm run devstart",
"devstart": "node -r dotenv/config ./dist/index.js",
"start": "node dist/index.js",

所以对我来说,Colson 的负分是不合理的,因为它间接帮助我解决了我的问题。

答案 3 :(得分:-1)

确保npm安装dotenv,并添加require('dotenv')。config();到您的app.js文件顶部。