我可以通过编程方式创建AWS Cognito用户登录吗?

swb*_*dit 7 authentication federated-identity amazon-web-services amazon-cognito

我希望我的应用程序允许用户使用Facebook,Google,Amazon ...等帐户才能登录我的应用程序.这可以通过AWS Cognito正常工作.

但是,如果用户没有任何登录,应用程序是否可以通过编程方式创建用户登录?

  1. 用户将提供id和密码,app将该信息发送给认证提供者以创建新的登录/帐户.

  2. 我不需要实现自己的身份验证机制,并担心如何存储密码等.

根据我的研究,我认为现有的身份验证提供程序甚至OpenID等其他服务都无法做到这一点.

如果我不想实现自己的登录存储和身份验证,您还有其他选择吗?它不一定需要与AWS Cognito集成.

Rya*_*ton 6

你的问题让我有些困惑。如果您要问:

我可以通过编程方式在Facebook / Google上创建新的用户名和密码吗?

那么答案是否定的。您必须在其网站上注册Facebook / Google。如果您要问:

我可以使用仅在Cognito中存在的用户名和密码创建新用户吗?

那么答案是肯定的。为此,取决于您是在浏览器中还是在服务器上创建用户。在浏览器中,使用Cognito Javascript API。在服务器上,使用Cognito Admin Server API

这是一些在Node JS中的服务器上创建新用户的示例代码(用您自己的令牌替换我的字符串,尤其是其中带有@符号的字符串):

  let params = {
    UserPoolId: "@cognito_pool_id@",
    Username: "jhancock",
    DesiredDeliveryMediums: ["EMAIL"],
    ForceAliasCreation: false,
    MessageAction: "SUPPRESS",
    TemporaryPassword: "somePassword",
    UserAttributes: [
      { Name: "given_name", Value: "John"},
      { Name: "family_name", Value: "Hancock"},
      { Name: "name", Value: "John Hancock"},
      { Name: "email", Value: "john@gmail.com"},
      { Name: "phone_number", Value: "+15125551212"}
    ],
  };
  console.log("Sending params to cognito: " + JSON.stringify(params));
  let cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider({region: "us-east-1"});
  cognitoIdentityServiceProvider.adminCreateUser(params, function(error, data) {
    if (error) {
      console.log("Error adding user to cognito: " + JSON.stringify(error), error.stack);
    } else {
      console.log("Received back from cognito: " + JSON.stringify(data));
    }
 }
Run Code Online (Sandbox Code Playgroud)

当您开始使用该密码时,您可能想看一下有关如何将临时密码更改为真实密码的文章


Ole*_*huk 0

从我之前实施社交媒体身份验证的经验来看,您好。我的结论是,它很难实现。如果你不知道在 iOS 中显示 Web 视图来验证用户身份,你需要使用 iOSACAccountStore类来实现这一点,但即使这样也只能提供登录的机会而不是登录。