调用Auth.updateUserAttributes

时间:2019-08-25 04:45:03

标签: react-native amazon-cognito aws-amplify

在登录时或更新用户属性后,我无法从AWS Cognito获取最新的用户信息。

我正在使用aws-amplify进行身份验证,并且注册和登录工作都很好。

该问题出现在我的个人资料页面上。我允许人们注册通知以及更改个人资料中的其他数据。我已经通过记录响应验证了在后端以及在控制台中成功进行了更改。

但是,当我调用Auth.currentAuthenticatedUser()时,我得到了以前缓存的信息。

在收到成功的响应后,如何检索更新的用户属性?

    async () => {
      const { email, given_name, family_name, preferred_username, "custom:notifyPredictRemind": customNotifyPredictRemind, "custom:notifyPredictResult": customNotifyPredictResult } = this.state;
      let params = { email, given_name, family_name, preferred_username, "custom:notifyPredictRemind": customNotifyPredictRemind, "custom:notifyPredictResult": customNotifyPredictResult } 
      let updateResult = await Auth.updateUserAttributes(user, params) // returns SUCCESS
      let user = await Auth.currentAuthenticaterUser()
    }

我希望最后调用currentAuthenticaterUser返回更新的用户信息。有什么想法可以做到吗?谢谢。

1 个答案:

答案 0 :(得分:1)

弄清楚了。有一个名为bypassCache的参数,您可以将其传递给currentAuthenticatedUser(),该参数将刷新用户的信息。对于初始登录和Cognito个人资料的更新很有用。

async () => {
  const { email, given_name, family_name, preferred_username, "custom:notifyPredictRemind": customNotifyPredictRemind, "custom:notifyPredictResult": customNotifyPredictResult } = this.state;
  let params = { email, given_name, family_name, preferred_username, "custom:notifyPredictRemind": customNotifyPredictRemind, "custom:notifyPredictResult": customNotifyPredictResult } 
  let updateResult = await Auth.updateUserAttributes(user, params) // returns SUCCESS
  let user = await Auth.currentAuthenticaterUser({bypassCache: true}) // UPDATED, NOW WORKS
}