因此,在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
}