【发布时间】:2025-12-27 14:45:11
【问题描述】:
我在 AzureAD 中有一个付费帐户。
使用带有以下代码的 Xamarin 表单:
我能够显示登录页面并能够输入我的电子邮件地址。
问题 :
当我在添加电子邮件地址后单击下一步按钮时,我被带到此页面:将您带到您组织的登录页面但活动指示器保持在无限循环中......没有返回任何内容。
更新
我在 2 部 Droid 手机上进行了测试。
A_phone 与 Android 版本 8.0 ,这项工作很快。后来我在手机中删除它并从VS2017重新部署到手机以确保工作。但是重新部署后,它现在无法正常工作。现在 B_phone 与 Android 版本 4.3,此显示网页不可用。为什么 B_Phone 不工作?
为什么会这样?
public static string ApplicationID = "xxxx-xxxx-xxxx-xxxx-xxxx";
public static string tenanturl = "https://login.microsoftonline.com/xxxx-xxxx-xxxx-xxxx-xxxxx";
public static string ReturnUri = "http://appname";
public static string GraphResourceUri = "https://graph.microsoft.com";
public static AuthenticationResult AuthenticationResult = null;
private async void Login_OnClicked(object sender, EventArgs e)
{
try
{
var data = await DependencyService.Get<IAuthenticator>()
.Authenticate(App.tenanturl, App.GraphResourceUri, App.ApplicationID, App.ReturnUri);
if (data != null)
{
App.AuthenticationResult = data;
NavigateTopage(data);
}
}
catch(Exception)
{ }
}
class Authenticator : IAuthenticator
{
public async Task<AuthenticationResult> Authenticate(string tenantUrl, string graphResourceUri, string ApplicationID, string returnUri)
{
try
{
var authContext = new AuthenticationContext(tenantUrl);
if (authContext.TokenCache.ReadItems().Any())
authContext = new AuthenticationContext(authContext.TokenCache.ReadItems().FirstOrDefault().Authority);
var authResult = await authContext.AcquireTokenAsync(graphResourceUri, ApplicationID, new Uri(returnUri), new PlatformParameters((Activity)Forms.Context));
return authResult;
}
catch(Exception)
{
return null;
}
}
}
请帮忙。你的帮助对我很重要。
谢谢
【问题讨论】:
-
你有什么异常吗?
-
无异常...活动指示器一直在循环...没有返回结果。以上设置是否正确?为什么会这样?这种情况如何排查?
-
如果您正在循环播放,则可能是身份验证出错。在你的 catch(Exception ex) { return null; 中设置一个断点} 看看 ex 有什么。
-
现在我的网页不可用。我需要做什么? Chrome 浏览器版本在此身份验证中是否重要? Droid API 级别重要吗?
-
您的凭据设置是否正确? Azure AD 中的权限?
标签: xamarin.forms azure-active-directory azure-ad-b2c