7

我希望我的应用程序允许拥有 Facebook、谷歌、亚马逊...等帐户的用户能够登录到我的应用程序。这可以通过 AWS Cognito 正常工作。

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

  1. 用户将提供一个 id 和一个密码,应用程序会将信息发送到身份验证提供程序以创建一个新的登录名/帐户。

  2. 我不需要实现自己的身份验证机制,也不需要担心密码的存储方式等。

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

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

4

2 回答 2

6

我对你的问题有点困惑。如果你问:

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

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

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

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

下面是一些用于在 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));
    }
 }

如果你得到这个工作,你可能想看看这篇关于如何将临时密码更改为真实密码的帖子。

于 2017-02-25T20:04:01.537 回答
0

您好,我之前在实施社交媒体身份验证方面的经验。我会得出结论,这很难实现。如果您不显示 Web 视图以在 iOS 中验证用户身份,则需要为此使用 iOSACAccountStore类,但即使这样也只能提供登录而不登录的机会。

于 2014-08-13T19:30:59.057 回答