Ruby on rails 如何使用AWS Cognito Ruby SDK注册新用户?
我想知道如何使用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_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但是设置凭据的方法很多。我在以下位置使用了文档:客户端实例似乎很好。