1

我正在使用 oauth2orize 和护照在 nodejs 中创建一个 API,但是当我请求令牌时,client_id 参数未定义。

授权:

server.exchange(oauth2orize.exchange.password(function (client, username, password, scope, callback) {
    console.log(client);    // This is undefined

邮政:

grant_type: password,
client: id_client,    // I tried with client_id, clientId, id...
username: username,
password: password

为什么客户端参数未定义?

非常感谢

4

1 回答 1

0

您需要创建至少一个这样的护照策略:

var passport = require('passport'),
    ClientPasswordStrategy = require('passport-oauth2-client-password').Strategy ;

passport.use("clientPassword", new ClientPasswordStrategy(
    function (clientId, clientSecret, done) {
        Clients.findOne({clientId: clientId}, function (err, client) {
            if (err) return done(err)
            if (!client) return done(null, false)
            if (!client.trustedClient) return done(null, false)

            if (client.clientSecret == clientSecret) return done(null, client)
            else return done(null, false)
        });
    }
));

然后您需要绑定您的路线,以便您的请求通过抛出此策略:(使用快递)

app.post('/url', passport.authenticate('clientPassword'), server.token());

最后,要请求您的令牌,POST 参数必须是:

  • client_id
  • client_secret
  • 用户名
  • 密码
  • grant_type : 密码
于 2015-02-03T13:34:31.433 回答