Cognito admin_initiate_auth响应异常创建新用户时用户不存在

时间:2018-03-22 21:53:34

标签: ruby aws-sdk amazon-cognito aws-cognito cognito

我正在尝试从我的ruby后端服务器在Cognito用户池中创建一个新用户。使用此代码:

client = Aws::CognitoIdentityProvider::Client.new
response = client.admin_initiate_auth({
  auth_flow: 'ADMIN_NO_SRP_AUTH',
  auth_parameters: {
    'USERNAME': @user.email,
    'PASSWORD': '123456789'
  },
  client_id: ENV['AWS_COGNITO_CLIENT_ID'],
  user_pool_id: ENV['AWS_COGNITO_POOL_ID']
})

我得到的回复是Aws::CognitoIdentityProvider::Errors::UserNotFoundException: User does not exist

我正在尝试遵循服务器身份验证流程(https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-authentication-flow.html),从中我了解到我可以使用admin_initiate_auth创建新用户。

我在这里做错了吗?

由于

1 个答案:

答案 0 :(得分:1)

您使用了错误的方法。 admin_initiate_auth用于在打开ADMIN_NO_SRP_AUTH的情况下登录/验证用户。

您需要使用sign_up方法:

resp = client.sign_up({
  client_id: "ClientIdType", # required
  secret_hash: "SecretHashType",
  username: "UsernameType", # required
  password: "PasswordType", # required
  user_attributes: [
    {
      name: "AttributeNameType", # required
      value: "AttributeValueType",
    },
  ],
  validation_data: [
    {
      name: "AttributeNameType", # required
      value: "AttributeValueType",
    },
  ],
  analytics_metadata: {
    analytics_endpoint_id: "StringType",
  },
  user_context_data: {
    encoded_data: "StringType",
  },
})

您可以在AWS Cognito IDP docs here.

中找到它