Microsoft.Identity.Client 版本 1.1.1-preview0040 在 Xamarin Forms 中无法正常工作

Microsoft.Identity.Client version 1.1.1-preview0040 doesn't work properly in Xamarin Forms

编辑: 我试过使用 2 天前刚发布的新预览版 (1.1.2-preview0008)。更新没有解决我遇到的问题。

我在我的 Xamarin 应用程序中使用 Microsoft.Identity.Client 版本 1.0.303282006 进行身份验证,但我已将其更新为版本 1.1.1-preview0040。

它现在的行为不正确。重构代码以使用版本 1.1.1-preview0040 后,应用程序构建,但是当获取令牌的代码行为 运行、AcquireTokenAsync(Scopes) 时,会引发此异常:

"Method 'Microsoft.Identity.Client.PublicClientApplication.AcquireTokenAsync' not found."

我尝试了相同方法的其他签名。现在,我正在使用 _pca.AcquireTokenAsync(Scopes, uIParent)。我可以从 Android 应用程序获取 uIParent,但它不是 100% 有效。它会打开一个登录对话框,允许我输入我的用户名,然后它会显示一个页面,上面写着“我们无法完成您的请求。”

我看了一下这个页面的url,它表明有一个错误:

https://login.live.com/err.srf?lc=2057#error=invalid_request&error_description=The+provided+value+for+the+input+parameter+'redirect_uri'+is+not+valid.+The+expected+value+is+'https://login.live.com/oauth20_desktop.srf'+or+a+URL+which+matches+the+redirect+URI+registered+for+this+client+application

我已经尝试过相同方法的其他类似签名,但它总是在它应该询问我密码的部分失败。似乎可以找到我的 Microsoft.Identity.Client nuget 包,但它没有被正确使用。

从外观上看,Microsoft.Identity.Client 的预览版 (1.1.1-preview0040) 似乎无法在 Xamarin 应用程序上正常运行。但是,我尝试制作一个 WinForms 应用程序并且它在那里正常工作,所以我不确定是什么导致了这个问题。

修复是按照 Xamarin Forms Sample App 设置的方式进行的,所以我不得不在 Android 清单中添加更多设置代码,并且需要设置重定向 URI。 AcquireTokenAsync(IEnumerable<string> scopes 不再适用于 Xamarin Apps,所以我不得不使用 AcquireTokenAsync(IEnumerable<string> scopes, UIParent parent)

我还在 Application Registration Portal 中添加了自定义重定向 URI,格式为 msal<clientId>://auth