首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS降落在Kotlin的8月份出现空白

AWS降落在Kotlin的8月份出现空白
EN

Stack Overflow用户
提问于 2019-09-13 04:39:20
回答 2查看 531关注 0票数 1

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

我使用扩容来创建认知池,使用默认设置。

SignInActivity

代码语言:javascript
复制
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()函数:

代码语言:javascript
复制
    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()
    }
}

代码语言:javascript
复制
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

代码语言:javascript
复制
{
    "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"
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 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.不同的内容。

看看您的代码,这应该也适用于您。

票数 2
EN

Stack Overflow用户

发布于 2019-10-03 19:41:20

您是否尝试过“快速启动身份验证指南”:https://aws-amplify.github.io/docs/android/authentication#drop-in-auth

最近,当我在一个新的Android项目中尝试这个简单的版本时,它对我起了作用:

代码语言:javascript
复制
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);
}
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57917368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档