我正在尝试在我的Kotlin Android应用程序中使用AWS科尼托的下拉列表(SignInUI),并让它在登录时重定向到我的MainActivity,但它正在打开一个空白屏幕:

我使用扩容来创建认知池,使用默认设置。
SignInActivity
class SignInActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_sign_in)
AWSMobileClient.getInstance().initialize(applicationContext, object : Callback<UserStateDetails>{
override fun onResult(result: UserStateDetails?) {
Logger.d(result?.userState)
when (result?.userState) {
UserState.SIGNED_IN -> {
val i = Intent(applicationContext, MainActivity::class.java)
startActivity(i)
}
UserState.SIGNED_OUT -> showSignIn()
else -> {
AWSMobileClient.getInstance().signOut()
showSignIn()
}
}
}
override fun onError(e: Exception?) {
Logger.e(e!!.localizedMessage)
}
})
}
private fun showSignIn() {
AWSMobileClient.getInstance().showSignIn(this@SignInActivity,
SignInUIOptions.builder().nextActivity(MainActivity::class.java).build())
}
}我尝试了另外两个版本的showSignIn()函数:
private fun showSignIn() {
AWSMobileClient.getInstance().initialize(this) {
val config = AuthUIConfiguration.Builder()
.userPools(true)
.backgroundColor(Color.BLUE)
.canCancel(true)
.build()
val signInUI = AWSMobileClient.getInstance().getClient(this@SignInActivity, SignInUI::class.java) as SignInUI
signInUI.login(this@SignInActivity, MainActivity::class.java).authUIConfiguration(config).execute()
}.execute()
}
}和
private fun showSignIn() {
AWSMobileClient.getInstance().initialize(this) {
val ui = AWSMobileClient.getInstance().getClient(
this@SignInActivity,
SignInUI::class.java) as SignInUI?
ui?.login(
this@SignInActivity,
MainActivity::class.java)?.execute()
}.execute()
}我的awsconfiguration.json
{
"UserAgent": "aws-amplify-cli/0.1.0",
"Version": "1.0",
"IdentityManager": {
"Default": {}
},
"AppSync": {
"Default": {
"ApiUrl": "https://[redacted].appsync-api.us-west-2.amazonaws.com/graphql",
"Region": "us-west-2",
"AuthMode": "AMAZON_COGNITO_USER_POOLS"
}
},
"CredentialsProvider": {
"CognitoIdentity": {
"Default": {
"PoolId": "[redacted]",
"Region": "us-west-2"
}
}
},
"CognitoUserPool": {
"Default": {
"PoolId": "[redacted]",
"AppClientId": "[redacted]",
"AppClientSecret": "[redacted]",
"Region": "us-west-2"
}
}
}发布于 2020-03-24 21:58:03
我也有类似的问题。也许这能帮上忙。
使用Android,我创建了一个空活动,用于调用代码中的签名,并将该活动类命名为"SignInActivity“。Android会自动创建其他一些文件,比如布局文件。现在来了有趣的部分。Android为我的空活动创建了布局文件,将其放置在"src\main\res\ layout \“目录中,并将其命名为"activity_sign_in.xml",该文件与android auth 2.16.9库的布局文件相同,在我的例子中,该库位于这里的activity_sign_in.xml中。
现在,当com.amazonaws.mobile.auth.ui.SignInActivity启动时,它调用setContentView(R.layout.activity_sign_in);。在我的例子中,它加载了我的空活动的布局,而不是2.16.9 lib中提供的布局。
解决方案是将布局xml文件的名称更改为与activity_sign_in.xml.不同的内容。
看看您的代码,这应该也适用于您。
发布于 2019-10-03 19:41:20
您是否尝试过“快速启动身份验证指南”:https://aws-amplify.github.io/docs/android/authentication#drop-in-auth
最近,当我在一个新的Android项目中尝试这个简单的版本时,它对我起了作用:
AWSMobileClient.getInstance().showSignIn(this, new Callback<UserStateDetails>() {
@Override
public void onResult(UserStateDetails result) {
Log.d(TAG, "onResult: " + result.getUserState());
}
@Override
public void onError(Exception e) {
Log.e(TAG, "onError: ", e);
}
});https://stackoverflow.com/questions/57917368
复制相似问题