首页 文章

如何使用cognito身份标识获取用户属性(用户名,电子邮件等)

提问于
浏览
17

我将AWS Cognito Identity Pool配置为使用Cognito User Pool作为身份验证提供程序 .

假设我在Cognito Identity Pool中具有身份的身份ID(例如,us-east-1:XXaXcXXa-XXXX-XXXX-XXX-XXXXXXXXXXXX),其中该身份具有到Cognito用户池中的用户的链接登录 .

使用身份ID,我如何获取链接的用户详细信息(电子邮件,电话,用户名)?

3 回答

  • 12

    您与Cognito联合身份服务交换以获取身份ID和凭据的ID令牌已具有所有用户属性 . 您无需额外拨打任何服务 .

    它是一个JWT令牌,您可以使用客户端上的任何库来解码值 . 您可以阅读this guide,了解有关Cognito用户池销售的令牌的更多信息 .

    或者,您也可以使用访问令牌来调用GetUser API,它将返回所有用户信息 .

  • -1

    使用这段代码

    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);
          }
    
  • -6
    console.log('username is ' + cognitoUser.getUsername());
    

相关问题