Как получить пользовательские атрибуты (имя пользователя, адрес электронной почты и т.д.), Используя идентификатор идентификатора cognito

У меня есть AWS Cognito Identity Pool, который настроен с использованием Cognito User Pool в качестве поставщика проверки подлинности.

Предположим, что у меня есть идентификатор идентичности в пуле идентификаторов Cognito (например, us-east-1: XXaXcXXa-XXXX-XXXX-XXX-XXXXXXXXXXXX), где это удостоверение имеет связанный логин с пользователем в пуле пользователей Cognito.

Используя идентификатор идентификатора, как я могу получить связанные данные пользователя (адрес электронной почты, телефон, имя пользователя)?

Ответы

Ответ 1

Идентификатор идентификатора, который вы обмениваете с интеграционной службой идентификации Cognito для получения идентификатора идентификатора, и учетные данные уже имеют все пользовательские атрибуты. Вам не нужен дополнительный вызов для любой службы.

Это токен JWT, и вы можете использовать любую библиотеку на клиенте для декодирования значений. Вы можете прочитать это руководство для получения дополнительной информации о токенах, созданных пулами пользователей Cognito.

В качестве альтернативы вы также можете использовать токен доступа для вызова API GetUser, который вернет всю информацию пользователя.

Ответ 2

Я столкнулся с подобной проблемой, и после слишком большого количества царапин я не смог найти точный способ вытащить детали. Мой случай использования должен был получить детали в приложении для Android. После изучения их клиентского API-кода AWSMobile. Я нашел ниже, и это работает от меня.

Log.i(TAG, "Данные пользователя" + AWSMobileClient.getInstance(). GetUserAttributes(). ToString());

Рекомендация. Попробуйте использовать AWSMobileclient, если вы используете его для разработки Android, поскольку это новая библиотека, которая рекомендуется для разработки.

Ответ 3

Используйте этот кусок кода

       GetDetailsHandler detailsHandler = new GetDetailsHandler() {
     @Override
     public void onSuccess(CognitoUserDetails cognitoUserDetails) {
        CognitoUserAttributes cognitoUserAttributes=cognitoUserDetails.getAttributes();
        stringStringHashMap=new HashMap<>();
        stringStringHashMap =cognitoUserAttributes.getAttributes();
         userNumber=stringStringHashMap.get("phone_number");
        e1.setText(userNumber);

        Log.d("Response"," Inside DEATILS HANDLER");
        // Store details in the AppHandler
        AppHelper.setUserDetails(cognitoUserDetails);
        // Trusted devices?
        handleTrustedDevice();
       // e1.setText(input.getText().toString());
         }

         @Override
          public void onFailure(Exception exception) {
        closeWaitDialog();
        showDialogMessage("Could not fetch user details!", AppHelper.formatException(exception), true);
        }
       };
     private void getDetails() {
    AppHelper.getPool().getUser(username).getDetailsInBackground(detailsHandler);
      }  

Ответ 4

console.log('username is ' + cognitoUser.getUsername());