如果未确认用户,如何使用Cognito更新属性?

时间:2016-09-14 17:20:08

标签: android amazon-web-services amazon-cognito

如果用户未使用AuthenticationHandler登录,也无法确认该用户,是否可以更新用户属性?这个想法是,当用户注册他们的帐户时,在“确认”他们的帐户之前,用户将他们的电子邮件更改为不同的电子邮件地址。我曾尝试使用UpdateAttributesHandler,但我收到了异常。

(1)如果对于用户对象,我使用userpool.getCurrentUser()或userpool.getUser(),则会收到以下异常:

W/System.err: com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoNotAuthorizedException: User-ID is null

(2)如果对于用户对象,我使用userpool.getUser(“”),我收到以下异常:

W/System.err: com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoNotAuthorizedException: user is not authenticated

(3)如果对于用户对象,我用户userpool.getUser(“”),我收到以下异常:

W/System.err: com.amazonaws.mobileconnectors.cognitoidentityprovider.exceptions.CognitoNotAuthorizedException: user is not authenticated

我的实施如下:

       user = userPool.getCurrentUser();
       UpdateAttributesHandler handler = new UpdateAttributesHandler() {
            @Override
            public void onSuccess(List<CognitoUserCodeDeliveryDetails> list) {
                     // set listener
                mOnCognitoUpdateUserAttributesListener.onSuccess(list);
            }

            @Override
            public void onFailure(Exception exception) {
                exception.printStackTrace();
                // resend code failed
                Log.e(TAG, exception.toString());
                // set listener
                mOnCognitoUpdateUserAttributesListener.onFailure(exception);
            }
        };
        user.updateAttributesInBackground(userAttributes, handler);

此请求每次都失败,除了我之前表达过的例外情况。能够更新用户信息的缺失是什么? AWS文档中未提及此问题:https://docs.aws.amazon.com/cognito/latest/developerguide/using-amazon-cognito-user-identity-pools-android-sdk.html

先谢谢你了!

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是根据架构中的要求指定电子邮件。使用AdminCreateUser配置用户服务器端,并通过SMS将密码发送给用户。当用户第一次登录时,他们必须设置他们的电子邮件。