所以我在使用AWS Cognito的SDK Android上遇到了这个时髦的问题,但是用kotlin而不是java。
我正在尝试登录,并且当它达到身份验证的成功函数时,它崩溃了。
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是无效的?但这不应该吗?我正在使用AWS文档,该文档在Java中,我认为这可能是一个特定的错误。我已经尝试添加另一个不将CognitodeVice作为参数而没有成功的乐趣。
在我的头上刮擦了数小时后,解决方案太简单了,问题是代码并未直接从Java转换为Kotlin。
由于其他人一定会遇到同一问题,如果他们在Amazon Web服务网站上关注教程,我决定共享解决方案,以便快速搜索可以找到它。
我们需要添加一个"?"到Cognitodevices是因为Kotlin本质上避免了零,但是由于此代码最初是在Java中,因此它通过null中的null。
override fun onSuccess(cognitoUserSession: CognitoUserSession, cognitoDevice: CognitoDevice?) {
// Sign-in was successful, cognitoUserSession will contain
}