簡體   English   中英

通過 Android 使用 Cognito AWS 進行簡單身份驗證

[英]Simple Auth with Cognito AWS via Android

我已經設法讓 Cognito 在我們的 web React 應用程序上工作,但現在我想讓它在我們的 Android 應用程序上工作。 但是,似乎驗證過程在 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();

據我所知,此身份驗證構建器將打開一個瀏覽器並在那里管理登錄,然后 go 回到應用程序。 如果我想使用自己的 UI 來獲取用戶名和密碼,就像在 web-app 示例中一樣?

有沒有人有任何關於如何做到這一點的示例代碼?

謝謝您的幫助! 真的很感激

這個 CognitoAuth (com.amazonaws:aws-android-sdk-cognitoauth:2.16.12@aar) 庫中提供的唯一鈎子似乎是一個捆綁屬性,通過.setCustomTabsExtras(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 自定義選項卡庫才能訪問 Bundle 中使用的常量。 注意:工具欄顏色更改不正確,因為 Chrome 移動瀏覽器似乎將我的應用程序提供的新顏色映射到它自己的值。 並不感到驚訝,但我仍然不知道如何解決它,或者我只是沒有把正確的價值放在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM