通过Android使用Cognito AWS进行简单身份验证

时间:2020-05-20 11:43:02

标签: android amazon-web-services authentication amazon-cognito

我设法让Cognito在我们的Web React应用程序上工作,但是现在我想让它在我们的Android应用程序上工作。但是,似乎Auth程序在Android上的工作方式不同于通过网络应用程序的工作方式。这是代码:

我们的React Web应用程序代码如下:

Amplify.configure({
  Auth: {
    mandatorySignId: true,
    region: config.cognito.REGION,
    userPoolId: config.cognito.USER_POOL_ID,
    userPoolWebClientId: config.cognito.APP_CLIENT_ID
  }
});

const user = await Auth.signIn(username, password);

如何在Android Studio上执行相同的操作?我看了一些这样的例子

        Auth.Builder builder = new Auth.Builder();
        builder.setAppClientId(appClientId)
                .setUserPoolId(userPoolId)
                .setAppCognitoWebDomain("")//What is this???
                .setApplicationContext(this.getContext())
                .setAuthHandler(new callback())
                .setSignInRedirect("")//Why is this here?
                .setSignOutRedirect("");//Why is this here?
        this.auth = builder.build();

此Auth构建器将打开浏览器并在其中管理登录名,然后据我所知返回应用程序。如果我想使用自己的UI来获取用户名和密码(如在网络应用程序示例中)怎么办?

有人对此有任何示例代码吗?

感谢您的帮助!真的很感激

1 个答案:

答案 0 :(得分:0)

此CognitoAuth(com.amazonaws:aws-android-sdk-cognitoauth:2.16.12@aar)中提供的唯一挂钩似乎是通过 .setCustomTabsExtras(bundle)< / em> ,可以将其分配给应用程序创建的Bundle实例,并填充您将在Chrome自定义标签库https://github.com/GoogleChrome/custom-tabs-client

中找到的属性

CognitoAuth库的源代码在AuthClient.java中显示,它将Chrome自定义标签库用作其托管UI的一部分,特别是 CustomTabsIntent 并且它将接受包含移动浏览器用于自定义的键/值对的捆绑实例。这些自定义项在Chrome自定义标签文档和源代码中进行了描述。

我自己一直在使用它,到目前为止,我还没有获得太多的自定义功能来工作,但是话又说回来,我可能还没有找到合适的键/值对来打包。我不得不费时费力,只是时间用光了,但是我确实改变了工具栏的背景颜色,因此很有希望。

这是我用过的东西:

Bundle customTabs = new Bundle();
customTabs.putInt(CustomTabsIntent.EXTRA_TOOLBAR_COLOR, R.color.white);

我必须在我的应用程序中包含Chrome自定义标签库,才能访问捆绑软件中使用的常量。注意:工具栏的颜色更改不正确,因为Chrome移动浏览器似乎正在将我的应用提供的新颜色映射为其自身的值。并不感到惊讶,但是我仍然不知道如何解决它,或者我只是没有在其中添加正确的价值。