Node.js 我们可以从passport js中的授权码获取访问令牌吗
我有一个客户端,它向我发送从oauth2授权端点获得的授权代码。我可以从我的nodejs后端代码创建一个请求,以使用此授权代码从令牌端点获取令牌。但是,我认为passport js应该已经有了这样的逻辑,因为它可以在verify回调函数中返回令牌(前提是整个授权流由passport完成)。我想知道passport js中是否有接受授权码并返回令牌的函数。我在文件里找不到这个。还尝试调试passport js代码,但没有成功:(如果您看到了,您在这里描述的内容: 我想知道passport js中是否有接受授权码并返回令牌的函数 由passport处理。根据链接中的示例,您应该具有以下策略配置:Node.js 我们可以从passport js中的授权码获取访问令牌吗,node.js,oauth-2.0,passport.js,Node.js,Oauth 2.0,Passport.js,我有一个客户端,它向我发送从oauth2授权端点获得的授权代码。我可以从我的nodejs后端代码创建一个请求,以使用此授权代码从令牌端点获取令牌。但是,我认为passport js应该已经有了这样的逻辑,因为它可以在verify回调函数中返回令牌(前提是整个授权流由passport完成)。我想知道passport js中是否有接受授权码并返回令牌的函数。我在文件里找不到这个。还尝试调试passport js代码,但没有成功:(如果您看到了,您在这里描述的内容: 我想知道passport js中是
passport.use(new OAuth2Strategy({
authorizationURL: 'https://www.example.com/oauth2/authorize',
tokenURL: 'https://www.example.com/oauth2/token',
clientID: EXAMPLE_CLIENT_ID,
clientSecret: EXAMPLE_CLIENT_SECRET,
callbackURL: "http://localhost:3000/auth/example/callback"
},
function(accessToken, refreshToken, profile, cb) {
// Do whatever here with the profile
}
));
callbackURL
是您正在寻找的“函数”。让我解释一下:
OAuth2规范(我假设您正在使用流)声明用户被重定向到身份提供者(authorizationURL)。然后,标识提供程序会提示用户输入其凭据,一旦进行身份验证,标识提供程序会将用户连同代码一起发送回您的应用程序。应通过与callbackURL终结点链接的回调方法来处理此代码。这是在其示例中描述的方式:
app.get('/auth/example/callback',
passport.authenticate('oauth2', { failureRedirect: '/login' }),
function(req, res) {
// Successful authentication, redirect home.
res.redirect('/');
});
策略中定义的回调应该管理您试图实现的目标
如果这不适合您的需要,您可以随时进行修补:)下面是一个您可以尝试的示例:
'use strict';
var OAuth2 = require('oauth').OAuth2;
function getTokenFromCode (code, clientID, clientSecret, authorizationURL, tokenURL) {
return () => {
var oAuth2 = new OAuth2(clientID, config.clientSecret,
'', config.authorizationURL, config.tokenURL);
var _getOAuthAccessToken = oAuth2.getOAuthAccessToken;
oAuth2.getOAuthAccessToken = (code, params, callback) => {
if (responseType) {
params.response_type = responseType;
}
_getOAuthAccessToken.call(oAuth2, code, params, callback);
};
return oAuth2;
};
}
此代码的作用如下:
getOAuthAccessToken
方法