【问题标题】:PHP AWS Cognito 'Error executing "SignUp" : ResourceNotFoundException : User pool client XXXX does not existPHP AWS Cognito'执行“SignUp”时出错:ResourceNotFoundException:用户池客户端 XXXX 不存在
【发布时间】:2022-04-24 20:19:13
【问题描述】:

当我在我的项目中实施 AWS Cognito 时出现以下错误。

Uncaught exception 'Aws\CognitoIdentityProvider\Exception\CognitoIdentityProviderException' with message 'Error executing "SignUp" on "https://cognito-idp.us-east-1.amazonaws.com"; AWS HTTP error: Client error: `POST https://cognito-idp.us-east-1.amazonaws.com` resulted in a `400 Bad Request` response: {"__type":"ResourceNotFoundException","message":"User pool client XXXX does not exist."} ResourceNotFoundException (client): User pool client XXXX does not exist. - {"__type":"ResourceNotFoundException","message":"User pool client XXXX does not exist."}' GuzzleHttp\Exception\ClientException: Client error: `POST https://cognito-idp.us-east-1.amazonaws.com` resulted in a `400 Bad Request` response: {"__type":"ResourceNotFoundException","message":"User pool client XXXX does not exist."} in /vendor/aws/aws-sdk-php/src/WrappedHttpHandler.php on line 191

我用的是这个网址:https://github.com/pmill/aws-cognito

这是我的 PHP 代码:

if(isset($_POST['action'])) {
    $username = $_POST['username'] ?? '';
    $password = $_POST['password'] ?? '';

    if($_POST['action'] === 'register') {
        $email = $_POST['email'] ?? '';

        $error = $client->registerUser($username, $password, [
            'email' => $email,
        ]);

        if(empty($error)) {
            header('Location: confirm.php?username=' . $username);
            exit();
        }
    }}

这是 config.php 文件。

$config = [
'credentials' => [
    'key' => 'XXXXXXXXXXXXXXXX',
    'secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
],
'region' => 'XXXXXXXXXXXXXXXX',
'version' => 'latest',
'app_client_id' => 'XXXXXXXXXXXXXXXX',
'app_client_secret' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
'user_pool_id' => 'XXXXXXXXXXXXXXXX'];

require './vendor/autoload.php';

$aws = new \Aws\Sdk($config);
$cognitoClient = $aws->createCognitoIdentityProvider();
$client = new \pmill\AwsCognito\CognitoClient($cognitoClient);
$client->setAppClientId($config['app_client_id']);
$client->setAppClientSecret($config['app_client_secret']);
$client->setRegion($config['region']);
$client->setUserPoolId($config['user_pool_id']);
return $client;

【问题讨论】:

    标签: php amazon-web-services amazon-cognito


    【解决方案1】:
     // use Aws\Exception\AwsException;
        
     // use Aws\CognitoIdentityProvider\CognitoIdentityProviderClient;
    
    $awsCognitoClient = new CognitoIdentityProviderClient([
        'version' => 'latest',
        'region' => 'us-east-1',//Change with your region
        'credentials' => [
            'key'    => YOUR_AWS_ACCESS_KEY,
            'secret' => YOUR_AWS_SECRET,
        ],
    ]);
    
    try {
        $result = $awsCognitoClient->adminInitiateAuth([
            'AuthFlow' => 'ADMIN_NO_SRP_AUTH',
            'ClientId' => YOUR_APP_CLIENT_ID,
            'UserPoolId' => YOUR_USER_POOL_ID,
            'AuthParameters' => [
                'USERNAME' => $userName,
                'PASSWORD' => $password,
            ],
        ]);
    
        $arr = $result->toArray();
    } catch (AwsException $e) {
        $errorArr = $e->toArray();
        $statusCode = $e->getStatusCode();
        $errorMessageCompleteLog = $e->getMessage();
    }
    
    

    如果成功,必须向您提供用户信息,如果您在客户端中遇到错误,请尝试创建另一个客户端,在创建过程中,Cognito 上有一个复选框,上面写着Generate client secret,取消选中该复选框并使用新凭据。

    【讨论】:

      【解决方案2】:

      如果您传递的客户端 ID 实际上不存在,则会引发错误。 可能是用户池创建在不同的区域或配置参数错误

      【讨论】:

        猜你喜欢
        • 2019-07-02
        • 2022-07-28
        • 2018-12-07
        • 2021-02-09
        • 1970-01-01
        • 1970-01-01
        • 2021-08-13
        • 2019-02-13
        • 2022-01-13
        相关资源
        最近更新 更多