Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用AWS Cognito Ruby SDK注册新用户?_Ruby On Rails_Ruby_Amazon Web Services_Amazon Cognito - Fatal编程技术网

Ruby on rails 如何使用AWS Cognito Ruby SDK注册新用户?

Ruby on rails 如何使用AWS Cognito Ruby SDK注册新用户?,ruby-on-rails,ruby,amazon-web-services,amazon-cognito,Ruby On Rails,Ruby,Amazon Web Services,Amazon Cognito,我想知道如何使用AWS Cognito Ruby SDK注册新用户 到目前为止,我试过: 输入 AWS_KEY = "MY_AWS_KEY" AWS_SECRET = "MY_AWS_SECRET" client = Aws::CognitoIdentityProvider::Client.new( access_key_id: AWS_KEY, secret_access_key: AWS_SECRET, region: 'us-east-

我想知道如何使用AWS Cognito Ruby SDK注册新用户

到目前为止,我试过:

输入

AWS_KEY = "MY_AWS_KEY"
AWS_SECRET = "MY_AWS_SECRET"

client = Aws::CognitoIdentityProvider::Client.new(
  access_key_id: AWS_KEY,
  secret_access_key: AWS_SECRET,
  region: 'us-east-1',
)

resp = client.sign_up({
  client_id: "4d2c7274mc1bk4e9fr******", # required
  username: "test@test.com", # required
  password: "Password23sing", # required
  user_attributes: [
    {
      name: "app", # required
      value: "my app name",
    },
  ],
  validation_data: [
    {
      name: "username", # required
      value: "true",
    },
  ]
})
Aws::CognitoIdentityProvider::Errors::NotAuthorizedException (Unable to verify secret hash for client 4d2c7274mc1bk4e9fr*****)
输出

AWS_KEY = "MY_AWS_KEY"
AWS_SECRET = "MY_AWS_SECRET"

client = Aws::CognitoIdentityProvider::Client.new(
  access_key_id: AWS_KEY,
  secret_access_key: AWS_SECRET,
  region: 'us-east-1',
)

resp = client.sign_up({
  client_id: "4d2c7274mc1bk4e9fr******", # required
  username: "test@test.com", # required
  password: "Password23sing", # required
  user_attributes: [
    {
      name: "app", # required
      value: "my app name",
    },
  ],
  validation_data: [
    {
      name: "username", # required
      value: "true",
    },
  ]
})
Aws::CognitoIdentityProvider::Errors::NotAuthorizedException (Unable to verify secret hash for client 4d2c7274mc1bk4e9fr*****)
参考资料


提前感谢

如果您的应用程序客户端配置了客户端机密,则大多数客户端请求都要求您在请求的选项参数中包含“机密哈希”。因此,请描述秘密哈希:

SecretHash值是一个base64编码的键控哈希消息 使用用户密钥计算的身份验证码(HMAC) 池客户端和用户名加上消息中的客户端ID。以下伪代码显示如何计算此值

Base64(HMAC_SHA256(“客户端密钥”、“用户名”+“客户端Id”))

这些文档还通过一组示例Java清楚地表明,您需要自己开发。经过一段时间的试验后,我成功地完成了一个
注册
通话,通话内容如下(我的测试池设置为需要电子邮件和姓名属性):

def secret\u散列(客户端密钥、用户名、客户端id)
Base64.strict_encode64(OpenSSL::HMAC.digest('sha256',CLIENT_SECRET,username+CLIENT_ID))
结束
client=Aws::CognitoIdentityProvider::client.new(
访问密钥id:AWS密钥,
机密访问密钥:AWS\u secret,
地区:地区)
用户名='鲍勃。scum@example.com'
resp=client.sign\u({
客户id:客户id,
用户名:用户名,
密码:“Password23sing!”,
机密散列:机密散列(客户端机密、用户名、客户端ID),
user_属性:[{name:'email',value:username},
{name:'name',value:'Bob'}],
验证数据:[{name:'username',value:'true'},
{name:'email',value:'true'}]
})
CLIENT\u SECRET
是可在常规设置>应用程序客户端下找到的应用程序客户端密码

结果:

#<struct Aws::CognitoIdentityProvider::Types::SignUpResponse
 user_confirmed=false,
 code_delivery_details=nil,
 user_sub="c87c2ac8-1480-4d15-a28d-6998d9260e73">
#

谢谢@rmlockerd但是设置凭据的方法很多。我在以下位置使用了文档:客户端实例似乎很好。