我将AWS Cognito Identity Pool配置为使用Cognito User Pool作为身份验证提供程序 .
假设我在Cognito Identity Pool中具有身份的身份ID(例如,us-east-1:XXaXcXXa-XXXX-XXXX-XXX-XXXXXXXXXXXX),其中该身份具有到Cognito用户池中的用户的链接登录 .
使用身份ID,我如何获取链接的用户详细信息(电子邮件,电话,用户名)?
您与Cognito联合身份服务交换以获取身份ID和凭据的ID令牌已具有所有用户属性 . 您无需额外拨打任何服务 .
它是一个JWT令牌,您可以使用客户端上的任何库来解码值 . 您可以阅读this guide,了解有关Cognito用户池销售的令牌的更多信息 .
或者,您也可以使用访问令牌来调用GetUser API,它将返回所有用户信息 .
使用这段代码
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); }
console.log('username is ' + cognitoUser.getUsername());
3 回答
您与Cognito联合身份服务交换以获取身份ID和凭据的ID令牌已具有所有用户属性 . 您无需额外拨打任何服务 .
它是一个JWT令牌,您可以使用客户端上的任何库来解码值 . 您可以阅读this guide,了解有关Cognito用户池销售的令牌的更多信息 .
或者,您也可以使用访问令牌来调用GetUser API,它将返回所有用户信息 .
使用这段代码