此处的当前Azure ADB2C Mobile应用程序示例在应用程序外部强制打开浏览器组件,并且在登录后重定向回该应用程序。
是否可以完全跳过此丑陋且笨拙的“登录”页面,并直接从移动应用程序组件进行登录/注册?我想创建自己的登录Activity
,所以我只去门户网站通过REST uri
获取令牌,而不必在应用程序外部打开浏览器。
答案 0 :(得分:0)
您可以创建a resource owner policy,使您能够在移动应用程序中收集用户凭据,然后在Azure AD B2C租户中对其进行验证。
您可以使用AppAuth for Android或AppAuth for iOS之类的客户端库来为您管理策略调用。
答案 1 :(得分:0)
这是一个古老的问题,但是一年后这个问题仍然引起我的共鸣。有一个答案:
.WithUseEmbeddedWebView(true)
完整的摘录(摘自Azure GitHub示例)为:
async void OnLoginButtonClicked(object sender, EventArgs e)
{
AuthenticationResult result;
try
{
//bool useEmbeddedWebView = !App.IsSystemWebViewAvailable;
result = await App.AuthenticationClient
.AcquireTokenInteractive(Constants.Scopes)
.WithPrompt(Prompt.SelectAccount)
.WithParentActivityOrWindow(App.UIParent)
.WithUseEmbeddedWebView(true)
.ExecuteAsync();
await Navigation.PushAsync(new LogoutPage(result));
}
catch (MsalException ex)
{
if (ex.Message != null && ex.Message.Contains("AADB2C90118"))
{
result = await OnForgotPassword();
await Navigation.PushAsync(new LogoutPage(result));
}
else if (ex.ErrorCode != "authentication_canceled")
{
await DisplayAlert("An error has occurred", "Exception message: " + ex.Message, "Dismiss");
}
}
}
请注意,这不是一个完整的解决方案,但确实会迫使B2C模板加载到WebView中,而不是打开浏览器并显示您的域名。将其放在共享代码项目中。
您不会使用自己的登录页面,但是它至少看起来像是您应用程序的一部分。
希望Microsoft在以后的版本中解决此问题。