如何正确配置 mean.js 护照以通过 Twitter 进行身份验证

how to properly configure mean.js passport to authenticate with twitter

在我基于 mean.js 的应用程序中,我正在尝试实施护照 Twitter 身份验证。

我在 development.js 中的 Twitter 部分如下所示:

twitter: {
        clientID: process.env.TWITTER_KEY || ' somekey1234',
        clientSecret: process.env.TWITTER_SECRET || 'someSecret1234',
        callbackURL: '/auth/twitter/callback'
    }

我已经注册了 Twitter,将我的手机号码添加到我的个人资料中,创建了一个应用程序,并获得了消费者密钥和消费者秘密。

我在 Twitter 中的网站条目如下所示:

http://10.211.55.25:3000

我的回调 url 条目如下所示:

http://10.211.55.25:3000/auth/twitter/callback

当我尝试在我的应用中 "Sign up using Twitter" 时。我收到此错误:

Error: {"errors":[{"code":32,"message":"Could not authenticate you."}]}
    at Strategy.parseErrorResponse (/home/eugene/dev/node/DataManager_0.2/node_modules/passport-twitter/lib/strategy.js:182:10)
    at Strategy.OAuthStrategy._createOAuthError (/home/eugene/dev/node/DataManager_0.2/node_modules/passport-twitter/node_modules/passport-oauth1/lib/strategy.js:349:16)
    at OAuthStrategy.authenticate (/home/eugene/dev/node/DataManager_0.2/node_modules/passport-twitter/node_modules/passport-oauth1/lib/strategy.js:218:41)
    at exports.OAuth.getOAuthRequestToken (/home/eugene/dev/node/DataManager_0.2/node_modules/passport-twitter/node_modules/passport-oauth1/node_modules/oauth/lib/oauth.js:543:17)
    at exports.OAuth._performSecureRequest.passBackControl (/home/eugene/dev/node/DataManager_0.2/node_modules/passport-twitter/node_modules/passport-oauth1/node_modules/oauth/lib/oauth.js:397:13)
    at IncomingMessage.exports.OAuth._performSecureRequest.request.on.callbackCalled (/home/eugene/dev/node/DataManager_0.2/node_modules/passport-twitter/node_modules/passport-oauth1/node_modules/oauth/lib/oauth.js:409:9)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
    at process._tickCallback (node.js:415:13)

当我收到此错误时,我浏览器中的应用程序 url 被设置为:

http://10.211.55.25:3000/auth/twitter

我该怎么做才能解决这个问题?

您的 JSON 值有误(一个 space 出现在 TWITTER_KEY 值中):

twitter: {
    clientID: process.env.TWITTER_KEY || ' somekey1234',
    clientSecret: process.env.TWITTER_SECRET || 'someSecret1234',
    callbackURL: '/auth/twitter/callback'
}

应该是

twitter: {
    clientID: process.env.TWITTER_KEY || 'somekey1234',
    clientSecret: process.env.TWITTER_SECRET || 'someSecret1234',
    callbackURL: '/auth/twitter/callback'
}