大佬教程收集整理的这篇文章主要介绍了node.js – AWS – nodejs SDK – CognitoIdentityServiceProvider.initiateAuth – CredentialsError:配置中缺少凭据,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到的错误是CredentialsError:配置中缺少凭据.特别是它告诉我我需要一个IdentityPoolId.但我似乎无法在我的AWS控制台中找到此IdentityPoolId.在哪里,我从我的用户池得到这个?我看到的只是一个Pool id和一个Pool ARN.
相关源代码:
var aws = require('aws-sdk'); aws.config.update({ region: 'us-east-1',credentials: new aws.CognitoIdentityCredentials({ IdentityPoolId: '???' }) }); var authUser = function(params,callBACk) { if (!params || !params.Email || !params._password) { callBACk(new Error('Invalid parameters.')); return false; } var cognito = new aws.CognitoIdentityserviceProvider(); var authParams = { AuthFlow: 'user_SRP_AUTH',// not sure what this means... ClientId: conf.AWSConfig.ClientId,AuthParameters: { Username: params.Email,password: params._password } }; cognito.initiateAuth(authParams,function(err,data) { if (err) { console.log('Error details: ' + util.inspect(err)); callBACk(err); return false; } callBACk(null,{success: true,data: data}); }); }
对于authParams对象,我不确定AuthFlow应该是什么.看看http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#initiateAuth-property,似乎user_SRP_AUTH就是@R_421_10675@用的东西.
编辑:
我相信我可能已经找到了获取IdentityPoolId的位置.我在编辑身份池时查看了“联合身份”部分并添加到“身份验证提供程序”部分下的相应“用户池”中.
我通过输入该用户池的用户池ID和应用客户端ID,将Cognito的身份验证提供程序与我创建的用户池相关联.现在使用相同的代码使用该标识池ID我收到错误CredentialsError:配置中缺少凭据.它表示此身份池不支持未经授权的访问.好的……我正在尝试授权用户……我是否需要创建一个未经身份验证的角色,以便用户可以在未经过身份验证时进行身份验证?如果这就是我需要做的事,这似乎很愚蠢.
编辑2:
我还应该注意到,我能够使用Javascript SDK(而不是nodejs)登录并获取AccessToken以及IdToken和refreshToken.我这样做了,不需要IdentityPoolId.我需要的唯一东西是UserPoolId和ClientId.
var authenticateUser = function(onsuccessCallBACk) { var authData = { Username: getUserName(),// gets username from an html text field password: getpassword() // gets password from an html password field }; var authDetails = new AWSCognito.CognitoIdentityserviceProvider.AuthenticationDetails(authData); var cognitoUser = getCognitoUser(); cognitoUser.authenticateUser(authDetails,{ onsuccess: function(result) { console.log('access token: ' + result.getAccessToken().getJwtToken()); console.log('idToken: ' + result.idToken.jwtToken); console.log(result); if (onsuccessCallBACk && typeof(onsuccessCallBACk) == 'function') { onsuccessCallBACk(cognitoUser); } },onFailure: function(err) { // UserNotConfirmedException: User is not confirmed. console.log('authError'); alert(err); } }); }
var authUser = function(params,callBACk) { if (!params || !params.Email || !params._password) { callBACk(new Error('Invalid parameters.')); return false; } var poolData = { UserPoolId: conf.AWSConfig.UserPoolId,ClientId: conf.AWSConfig.ClientId }; var userPool = new aws.CognitoIdentityserviceProvider.CognitoUserPool(poolData); var authData = { Username: params.Email,password: params._password }; var authDetails = new aws.CognitoIdentityserviceProvider.AuthenticationDetails(authData); var userData = { Username: params.Email,Pool: userPool }; var cognitoUser = new aws.CognitoIdentityserviceProvider.CognitoUser(userData); cognitoUser.authenticateUser(authDetails,{ onsuccess: function(result) { callBACk(null,data: result}); },onFailure: function(err) { console.log('authUser error: ' + util.inspect(err)); callBACk(err); } }); }
我现在成功获得了令牌的回复!万岁!
以上是大佬教程为你收集整理的node.js – AWS – nodejs SDK – CognitoIdentityServiceProvider.initiateAuth – CredentialsError:配置中缺少凭据全部内容,希望文章能够帮你解决node.js – AWS – nodejs SDK – CognitoIdentityServiceProvider.initiateAuth – CredentialsError:配置中缺少凭据所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。