在AWS Cognito中,如果在登录应用程序后未获得令牌,可能有几个原因。以下是一些可能的解决方法:
// 示例代码
// 创建Cognito用户池提供者对象
var cognitoIdentityProvider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
// 设置OAuth回调URL
var callbackUrl = 'https://your-app/callback';
// 构建授权URL
var authUrl = cognitoIdentityProvider.getAuthorizeUrl({
ClientId: 'your-client-id',
RedirectUri: callbackUrl,
ResponseType: 'code'
});
// 重定向到授权URL
res.redirect(authUrl);
检查Cognito用户池的应用程序客户端设置。确保在应用程序客户端中启用了正确的OAuth流程,例如使用“授权代码授权”流程。确保将发行令牌和访问令牌作为客户端设置的一部分启用。
检查登录应用程序后的回调处理代码。确保在回调处理程序中正确处理授权代码,并使用授权代码请求访问令牌。
// 示例代码
// 在回调处理程序中获取授权代码
var authorizationCode = req.query.code;
// 使用授权代码请求访问令牌
var params = {
ClientId: 'your-client-id',
Code: authorizationCode,
RedirectUri: 'https://your-app/callback'
};
cognitoIdentityProvider.getToken(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log(data);
// 处理返回的访问令牌
}
});
如果上述步骤都正确配置并且仍然无法获得令牌,请确保在应用程序的身份提供者设置中启用了正确的身份提供者,并且应用程序具有正确的权限来执行所需的操作。