3

我创建了 nodeJS 脚本来使用类“CreateIdentityPool”设置我的AWS Cognito 池 ID :

var cognitoidentity = new AWS.CognitoIdentity();
var params = {
    "IdentityPoolName": "samplePool",
    "AllowUnauthenticatedIdentities": true,
    "CognitoIdentityProviders": [
      {
        "ClientId": "xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com", /* google client ID */
        "ProviderName": "accounts.google.com"
      }
    ],
    "DeveloperProviderName": "mypool"
};
cognitoidentity.createIdentityPool(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

但它在下面出现错误:

{ [ValidationException:检测到 1 个验证错误:“cognitoIdentityProviders.1.member.clientId”处的值“xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com”未能满足约束:成员必须满足正则表达式模式:[\w_]+] 消息:“检测到 1 个验证错误:\'cognitoIdentityProviders.1.member.clientId\' 处的值 \'xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com\' 未能满足约束条件:成员必须满足正则表达式模式:[\w_]+ ',代码:'ValidationException',时间:2017 年 1 月 31 日星期二 21:11:48 GMT+1100 (AEDT),requestId:'ad2b3366-e79d-11e6-b2e7-578f32ddcea5',statusCode:400,
可重试:false,retryDelay: 45.71310137398541 }

第二种方式,我首先尝试在没有CognitoIdentityProviders的情况下创建身份池 ID ,然后使用“UpdateIdentityPool”类运行更新以添加 CognitoIdentityProviders(解锁身份验证提供程序)。但是,上面是同样的问题。

第三种方式,我尝试使用来自aws cli的argumen --cognito-identity-providers创建身份池ID,但仍然遇到同样的问题:

调用 UpdateIdentityPool 操作时发生错误 (ValidationException):检测到 1 个验证错误:“cognitoIdentityProviders.1.member.clientId”处的值“xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e”未能满足约束:成员必须满足正则表达式模式:[\w_]+

第四种方法,我尝试从 aws cli 创建没有 --cognito-identity-providers 的身份池 ID,然后从 aws cli 更新它(添加 --cognito-identity-providers)。这仍然是同样的问题。

对这个问题非常沮丧,我必须从 nodeJS 设置它。因此,请不要建议从 AWS 控制台解锁身份验证提供程序。这个问题的参考资料很差。如果您能将我链接到已解决的参考资料,我将不胜感激。

谢谢

4

1 回答 1

3

您正在使用CognitoIdentityProviders,但那是针对 AWS Cognito 用户池。你需要设置SupportedLoginProviders它才能工作。像这样:

var params = {
    "IdentityPoolName": "samplePool",
    "AllowUnauthenticatedIdentities": true,
    "SupportedLoginProviders": {
        "accounts.google.com": "xxxxxxxxxxx-qea4ebra0gipd0krefi37v8f48svrp8e.apps.googleusercontent.com",
     }
};
于 2017-02-01T12:05:43.083 回答