当前位置: 首页 > 知识库问答 >
问题:

以编程方式在Cognito中创建一个带有电子邮件和密码(永久密码)的用户

魏松
2023-03-14

我目前有一些代码,可以创建一个带有临时密码的新用户。我收到一封电子邮件,上面有我账户的临时密码,但我想得到一个验证码。确认我的邮件。

下面是代码:

  public static void registerUser(String email) {
    String userPoolId = "eu-central-1_xxx";
    AWSCognitoIdentityProvider cognitoClient = setUpCognitoClient();
    
    String password = "123456789";
    
    try {
      AdminCreateUserRequest userRequest =
              new AdminCreateUserRequest().withUserPoolId(userPoolId).withUsername(email);
      
      cognitoClient.adminCreateUser(userRequest);
      
      AdminSetUserPasswordRequest adminSetUserPasswordRequest =
              new AdminSetUserPasswordRequest().withUsername(email)
                      .withUserPoolId(userPoolId).withPassword(password).withPermanent(true);
      
      cognitoClient.adminSetUserPassword(adminSetUserPasswordRequest);
    } catch (AWSCognitoIdentityProviderException e) {
      System.out.println(e.getErrorMessage());
    } catch (Exception e) {
      System.out.println(e);
    }
    
  }

好像是。withPermanent(true)不起作用。

目前,我正在通过一个调用创建一个用户,并通过另一个调用设置密码(AdminSetUserPasswordRequest())。有没有更简单的方法?

共有1个答案

阎星华
2023-03-14

我很惊讶,我花了这么长时间才找到一个解决方案,解决了创建一个没有临时密码的用户这样一个非常琐碎的问题。

public static void signUpUser(String email, String password) {
    AWSCognitoIdentityProvider cognitoClient = setUpCognitoClient();
    try {
      SignUpRequest signUpRequest = new SignUpRequest().withUsername(email).withPassword(password).withClientId("xxx");
      cognitoClient.signUp(signUpRequest);
    } catch (AWSCognitoIdentityProviderException e) {
      System.out.println(e.getErrorMessage());
    } catch (Exception e) {
      System.out.println(e);
    }
 }

因此,差异是稳定的,而不是。adminCreateUser我正在使用。注册

在这种情况下,您将需要您的clientId(这不是您的池ID!)-. with ClientId("xxx")

提示:切换到Cognito console的旧视图,以更快地找到客户机id-if将位于左侧菜单的App Clients选项卡下。

注册后,用户将不会得到确认和验证,并将收到一封带有验证电子邮件代码(非临时密码)的电子邮件。

顺便说一句,我的验证邮件是垃圾邮件——所以如果你没有收到邮件,请看那里。

 类似资料:
  • 我正在使用java为视障人士创建一个电子邮件应用程序,输入电子邮件和密码时遇到问题。整个应用程序都是基于语音的,我正在使用google语音API将语音转换为文本。我一直试图让用户一次输入一个字符的用户名/密码,但问题是谷歌语音无法正确识别字符。 如果有任何其他可能的方式供失明用户输入用户名/密码,或者任何其他可能的方式通过语音识别单个字符,我会很高兴。 更多信息:我正在尝试登录谷歌,所以输入用户名

  • 我使用laravel 5.6,并成功地将视图作为电子邮件发送。 我使用以下代码: 我唯一的问题是密码重置。我知道我可以自定义一点模板,但是如何覆盖默认的电子邮件模板并发送我自己的视图? 我尝试写我自己的ResetPassword通知: 但我只能翻译电子邮件。我想要的是根据我自己的模板发送我自己的视图。 可能吗? 谢谢你的帮助。

  • 我正在开发一个门户/移动应用程序,用户需要在注册过程中提供电子邮件id和电话号码。如果用户选择在系统中创建用户id,我将使用Congnito用户池进行身份验证。Cognito具有验证此类用户的电话号码/邮件id的功能。 如果他们选择使用他们的facebook/领英ID登录,Cognito中没有方法来验证电子邮件-d/电话号码。 如何验证联合身份用户的电子邮件/电话号码?

  • 我已经在Flitter中构建了一个应用程序,并使用firebase电子邮件密码验证方法进行用户登录。我只是想知道我们是否可以在firebase中查看用户的密码。如果无法查看我们应用程序的用户密码,那么这可能是不公平的,因为我们是应用程序的所有者,我们自己也不知道我们应用程序用户的密码。例如,facebook应用程序所有者(扎克伯格)可能知道用户的密码,或者instagram应用程序所有者可能知道用

  • 任务清理(类型:Delete){Delete RootProject.BuildDir}