ADAL无法在Xamarin.PCL中使用管理员同意

ADAL无法在Xamarin.PCL中使用管理员同意,xamarin,active-directory,multi-tenant,adal,Xamarin,Active Directory,Multi Tenant,Adal,ADAL:无法在Xamarin.PCL中将“prompt=admin_approve”用作额外的查询参数 当我试图在Xamarin PCL中使用以下代码时 result = await authContext.AcquireTokenAsync(AppIdURI, ClientId, RedirectUri, PlatformParameter, UserIdentifier.AnyUser, "prompt=admin_consent"); 我收到一个例外: extraqueryparame

ADAL:无法在Xamarin.PCL中将“prompt=admin_approve”用作额外的查询参数

当我试图在Xamarin PCL中使用以下代码时

result = await authContext.AcquireTokenAsync(AppIdURI, ClientId, RedirectUri, PlatformParameter, UserIdentifier.AnyUser, "prompt=admin_consent");
我收到一个例外:

extraqueryparameters中存在重复的查询参数“prompt”

我正在使用此调用为多租户场景中的管理级别的应用程序添加权限。如果没有“prompt=admin_approve”,我无法同意所有用户的申请。当我使用默认行为时,ADAL在第一次登录时显示管理员同意,但不在Azure AD中保存更改

也许有人知道如何处理这个问题

谢谢

2017年2月15日更新

我正在Xamarin Android项目中创建PlatformParameter:

var PlatformParameter =new PlatformParameters(this);
其中“this”是“Activity”。看起来它生成了一些默认的“prompt”参数


此问题仅适用于Xamarin,UWP和WPF或ASP.NET中没有问题,仅适用于多租户场景。

这里的问题是,您传递的
平台参数
重载已在登录URL中设置了“提示”查询字符串。因此,当您手动添加另一个带有“prompt”的查询字符串时,它会看到重复的参数

您需要确保
PlatformParameter
设置为“PromptBehavior.Auto”,否则额外的查询字符串参数将不起作用


让我知道这是否有帮助

您是否可以共享由代码生成的完整登录url?我的假设是,您的另一个参数也在设置提示值。不过,它不是重复的,您所指的主题是关于另一个问题。我的问题仅适用于Xamarin版本的ADAL。当我在UWP、WPF、控制台应用程序、ASP.NET中强制使用“prompt=admin_approve”时,我对应用程序的同意没有任何问题。谢谢您的建议。但“PromptBehavior.Auto”在Xamarin(PCL)版本的ADAL中不可用。PlatformParameter是PlatformParameters(this),其中this是活动。看起来它生成了一些默认的“prompt”参数。