Microsoft.Identity.Client版本1.1.1-preview0040在Xamarin Forms

时间:2018-02-04 21:14:00

标签: xamarin login xamarin.forms msal

编辑:我已尝试使用2天前推出的新预览版(1.1.2-preview0008)。此更新并未解决我遇到的问题。

我使用Microsoft.Identity.Client版本1.0.303282006在我的Xamarin App中进行身份验证,但我已将其更新为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%运行。它会打开一个登录对话框,允许我输入我的用户名,然后会显示一个页面,上面写着“我们无法完成您的请求。”

我看了一下这个页面的网址,它表明出现了错误:

  

https://login.live.com/err.srf?lc=2057#error=invalid_request&error_description=The+provided+value+for+the+input+parameter+' REDIRECT_URI'是+未+有效+的+预期+值+是+' https://login.live.com/oauth20_desktop.srf&#39 +或+ A + URL +其中+比赛的+ + +重定向URI +注册+为+ +这个客户+应用程序

我尝试了同样方法的其他类似签名,并且在它应该问我密码的部分总是失败。看起来我的Microsoft.Identity.Client nuget包可以找到,但它没有被正确使用。

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

1 个答案:

答案 0 :(得分:0)

修复方法是遵循Xamarin Forms Sample App设置的方式,因此我必须在Android Manifest中添加更多设置代码,并且需要设置重定向URI。 AcquireTokenAsync(IEnumerable<string> scopes不再适用于Xamarin Apps,因此我必须使用AcquireTokenAsync(IEnumerable<string> scopes, UIParent parent)

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