Пользовательское веб-представление Azure Adb2c для загрузки пользовательских потоков в собственном Android с использованием MSAL

Я интегрировал azure adb2c в свое собственное приложение для Android, используя MSAL. В настоящее время я использую createSingleAccountPublicClientApplicationдля моего приложения. Я создал sign-up and sign-in user flowи интегрирован с моим приложением, которое отлично работает. Когда приложение запускается, оно перенаправляется в веб-представление, поскольку я уже упоминал BrowserTabActivityвнутри файла манифеста. Но согласно нашему требованию, мы должны создать свой собственный и показать все userflowsи при необходимости получите обратный вызов. Можно ли создать custom webview для android и показать потоки пользователей?

Вторая проблема: когда пользователь нажимает на back button со страницы регистрации, код ошибки AADB2C90091выбрасывается, не возвращаясь на страницу UserFlow. Как я могу показать signIn UserFlow Pag на обратной стороне нажата?

      @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.microsoft_azure);
        context = MicrosoftAzureActivity.this;
        initializeUI();

        // Creates a PublicClientApplication object with res/raw/auth_config_single_account.json
        PublicClientApplication.createSingleAccountPublicClientApplication(MicrosoftAzureActivity.this,
                R.raw.auth_config_single_account,
                new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
                    @Override
                    public void onCreated(ISingleAccountPublicClientApplication application) {
                        /**
                         * This test app assumes that the app is only going to support one account.
                         * This requires "account_mode" : "SINGLE" in the config json file.
                         **/
                        mSingleAccountApp = application;

                        loadAccount();
                    }

                    @Override
                    public void onError(MsalException exception) {
                        displayError(exception);
                    }
                });

    }

loadAccount ::

       private void loadAccount() {
        if (mSingleAccountApp == null) {

            return;
        }
         mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback() {
            @Override
            public void onAccountLoaded(@Nullable IAccount activeAccount) {
                // You can use the account data to update your UI or your app database.
                mAccount = activeAccount;
                if (activeAccount != null) {
              mSingleAccountApp.acquireTokenSilentAsync(getScopes(), B2CConfiguration.getAuthorityFromPolicyName("B2C_1_SignInSignUp"), getAuthSilentCallback());

                }
            }

            @Override
            public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable IAccount currentAccount) {
                if (currentAccount == null) {
                    // Perform a cleanup task as the signed-in account changed.
                    showToastOnSignOut();
                }
            }

            @Override
            public void onError(@NonNull MsalException exception) {
                displayError(exception);
            }
        });
    }

auth_config_single_account::

{
  "client_id" : "cfsttrtkg-4545-fsrdh-822d-53453423-0",
  "redirect_uri" : "msauth://**********/***********,
  "account_mode" : "SINGLE",
  "broker_redirect_uri_registered": false,
  "authorization_user_agent" : "WEBVIEW",
  "authorities": [
    {
      "type": "B2C",
      "authority_url": "SIGNIN_SIGNUP_POLICY",
      "default": true
    },
    {
      "type": "B2C",
      "authority_url": "PASSWORD_RESET_POLICY"
    }
  ]
}

0 ответов

Другие вопросы по тегам