Пользовательское веб-представление 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"
}
]
}