ХОРОШО. Вот моя вещь
Мы строим небольшое приложение поверх Lumen / Laravel. Нам нужно, чтобы управление пользователями полностью осуществлялось AWS cognito.
В основном 2 простые функции.
Нам нужно сделать это с помощью PHP.
Теперь проблема в том, что я не могу найти никаких документов по API PHP с четкой процедурой или примерами. Cognito предоставляет API только для Android, IOS, JS, Unity и Xamarian. Мне нужна похожая документация для PHP.
У кого-нибудь есть рабочий пример только для двух вышеупомянутых функций, использующих API Cognito с PHP.
Примечание: я почти потратил больше полутора дней, чтобы понять, можно ли это сделать и как. Поэтому, пожалуйста, не присылайте мне ни одной ссылки, которая появляется первой или второй в вашем поиске Google. Вероятно, я уже видел эту ссылку без удачи.
Любая помощь будет оценена.
К сожалению, нет рабочих примеров для PHP.
В настоящее время Cognito поддерживает SDK высокого уровня для тех, кого вы упомянули, но не поддерживает SDK высокого уровня для PHP. Низкоуровневый SDK можно использовать, вызывая API, упомянутые ниже.
Приведенный ниже пример должен работать с небольшим переводом на PHP, как и большая часть кода в этом SDK.
https://github.com/aws/aws-sdk-android/blob/master/aws-android-sdk-cognitoidentityprovider/src/main/java/com/amazonaws/mobileconnectors/cognitoidentityprovider/CognitoUser.java
Вместо вызова InitiateAuth, вы можете вызвать API AdminInitiate auth с параметром ADMIN_NO_SRP_AUTH, чтобы вам не нужно было выполнять вычисления SRP в PHP. SDK высокого уровня обеспечивают обертку для этих вычислений, которая управляет ими для вас, но сделать это самостоятельно довольно сложно.
Чтобы иметь возможность использовать любой из запросов API, сначала необходимо правильно настроить учетные данные. Делать это на стороне сервера & за пределами EC2, вам нужно будет предоставить Ключ доступа к AWS & КЛЮЧ ОТ СЕКРЕТНОГО ДОСТУПА AWS, идентификатор клиента приложения, секрет клиента и идентификатор пула пользователей вот так
$args = [
'credentials' => [
'key' => 'AAAAAAAAAA',
'secret' => 'abacaaswfas',
],
'region' => 'eu-central-1',
'version' => 'latest',
'app_client_id' => '3asd123adfs1231sdfs',
'app_client_secret' => '1sdf123sdfs123sdfsfsdf132fd3213',
'user_pool_id' => 'eu-central-1_aaaW2Df3',
]
В противном случае вы увидите все возможные виды ошибок, пока не получите правильные идентификаторы.
Чтобы получить ключ доступа к AWS & КЛЮЧ ОТ СЕКРЕТНОГО ДОСТУПА AWS перейдите на консоль AWS, щелкните свое имя, затем перейдите в учетную запись, затем снова нажмите свое имя и перейдите кМои учетные данные«Тогда, я думаю, вы найдете выход …
Чтобы получить идентификатор клиента приложения, секрет клиента приложения, сначала необходимо создать пул пользователей, а затем перейти к клиенту приложения и создать его. (Вы можете найти идентификатор пула под общие настройки )
Простой запрос на вход
$client = new CognitoIdentityProviderClient($args);
$client->adminInitiateAuth([
'AuthFlow' => 'ADMIN_NO_SRP_AUTH',
'AuthParameters' => [
'USERNAME' => YOUR_USERNAME_HERE,
'PASSWORD' => YOUR_PASS_HERE,
'SECRET_HASH' => , base64_encode(hash_hmac('sha256', YOUR_USERNAME_HERE . APP_CLIENT_ID, APP_CLIENT_SECRET, true))
],
'ClientId' => APP_CLIENT_ID,
'UserPoolId' => USER_POOL_ID,
]);
если вы заставите это работать, вы сможете использовать любое из действий, перечисленных в документации Вот
Замечания: Это работает на Версия API 2016-04-18 & PHP 7.1, Пожалуйста, убедитесь, что вы используете ту же версию или, по крайней мере, в API нет серьезных изменений, прежде чем предположить, что это будет работать для вас.
Заметка 2: Идентификаторы, которые я использовал, абсолютно случайны, но они должны иметь одинаковый формат.