我在AzureAD中有一个付费帐户。
使用带有以下代码的Xamarin表单:
我能够显示“登录页面”并输入我的电子邮件地址。
问题:
添加电子邮件地址后,单击下一步按钮时,我被带到了以下页面:带您进入组织的登录页面,但活动指示器处于无限循环状态……没有任何回报。
>
更新
我在2台Droid手机上进行了测试。
装有Android 8.0版的A_phone,很快就可以使用。后来我在手机中将其删除,并从VS2017重新部署到手机以确保正常工作。但是重新部署后,它现在无法正常工作。现在,B_phone和Android版本4.3,此显示WebPage不可用。为什么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;
}
}
}
请帮助。您的帮助对我很重要。
谢谢
答案 0 :(得分:0)
确保您的Reply URL是您的主要主页URL,并且您的配置中的Redirect URI与您的应用程序注册中的内容匹配。还要验证配置中的客户端ID是否与您的应用程序中的应用程序ID匹配。您可以添加else语句,以确保即使用户未通过身份验证,也可以导航到某处。