【问题标题】:Unable to access company tenant in AzureAD with correct settings无法使用正确的设置访问 AzureAD 中的公司租户
【发布时间】: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


【解决方案1】:

确保您的回复 URL 是您的主页 URL,并且您的配置中的重定向 URI 与您的应用注册中的内容相匹配。还要验证配置中的客户端 ID 是否与应用程序中的应用 ID 匹配。您可以添加 else 语句以确保即使用户未通过身份验证也可以导航到某处。

【讨论】: