我正在使用Xamarin.Forms开发一个应用程序,该应用程序应在Windows和Android的第一个版本上运行。 应该使用Graph API来访问OneDrive / OneNote。
我已经设法在UWP(通用Windows平台)下检索登录用户的名称。 因此,我尝试将相同的应用程序部署到Android,其中的调用与以下扩展非常相似:
UIParent部分已经可以使用,但是AuthenticationAgentContinuationHelper无法内置到应用程序中。
Visual Studio在这里说:
Duplicate Java type found!
Mappings between managed types and Java types must be unique.
First Type:
'Microsoft.Identity.Client.Platforms.Android.SystemWebview.AuthenticationActivity, Microsoft.Identity.Client, Version=2.6.2.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae';
Second Type:
'Microsoft.Identity.Core.UI.SystemWebview.AuthenticationActivity, Microsoft.IdentityModel.Clients.ActiveDirectory, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
Xamarin应用程序是使用“ .NET Standard”代码共享策略和Visual Studio中的空白模板作为新应用程序启动的。在我阅读此书时,它已取代了“ PCL”方式,该方式在VS2017中无法选择。
您知道如何解决此问题吗?
答案 0 :(得分:1)
此错误开始的原因是,当团队努力将功能奇偶校验带给MSAL和公共缓存时,MSAL回购正与ADAL共享代码。然后,MSAL被移回其原始存储库,但未更新Android和iOS命名空间,因此如果在同一项目中同时使用ADAL和MSAL,则会发生冲突。 MSAL 2.7对于iOS ViewController类和ADAL 4.5对于Android AuthenticationActivity类已得到修复。
答案 1 :(得分:0)
确定要同时使用Microsoft.Identity.Client(MSAL)和Microsoft.IdentityModel.Clients.ActiveDirectory(ADAL)包吗?
MSAL用于针对AAD v2端点进行身份验证,而ADAL用于针对AAD v1端点进行身份验证,因此从理论上讲,您将需要一个或另一个。
也许在某些情况下您同时需要两者,但是我遇到了相同的错误,并且在使用MSAL进行身份验证时,我卸载了Microsoft.IdentityModel.Clients.ActiveDirectory nuget软件包,一切都很好。