因此,在Android上使用AWS Cognito的SDK时遇到了一个时髦的问题,
但是使用Kotlin而不是JAVA。

我正在尝试登录,并且似乎在到达AuthenticationHandler的成功功能时,它崩溃了。

 override fun onSuccess(cognitoUserSession: CognitoUserSession, cognitoDevice: CognitoDevice?) {
            // Sign-in was successful, cognitoUserSession will contain tokens for the user

崩溃的错误:
EXCEPTION: main
    java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter cognitoDevice

换句话说,说明cognitoDevice为null?但这不应该吗?我正在使用JAVA中的AWS文档,我认为这可能是Kotlin特定的错误。我已经尝试过添加另一个onSuccess有趣的功能,该功能不会将cognitoDevice用作没有成功的参数。

最佳答案

经过数小时的研究后,解决方案太简单了,问题在于代码不能很好地从Java直接转换为Kotlin。

如果其他人遵循Amazon Web Services网站上的教程,肯定会遇到相同的问题,所以我决定共享该解决方案,以便快速搜索找到它。

我们需要添加一个“?”之所以将其传递给CognitoDevices是因为Kotlin本质上会避免使用null,但是由于此代码最初是在Java中提供的,因此会传递null。

 override fun onSuccess(cognitoUserSession: CognitoUserSession, cognitoDevice: CognitoDevice?) {
            // Sign-in was successful, cognitoUserSession will contain
        }

10-06 06:06