【问题标题】:Microsoft.Identity.Client version 1.1.1-preview0040 doesn't work properly in Xamarin FormsMicrosoft.Identity.Client 版本 1.1.1-preview0040 在 Xamarin 窗体中无法正常工作
【发布时间】:2018-02-04 21:13:59
【问题描述】:

编辑:我尝试使用 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+这个+客户端+应用程序

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

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

【问题讨论】:

  • 这看起来更像是一个错误报告,而不是一个实际的问题。您应该是reporting a bug report on the Microsoft github page,并在 xamarin 项目中提供该问题的回购,而不是在这里。
  • 我不确定这是一个错误。错误是说您为重定向 URI 注册的值与您在请求中指定的值不同。我相信 Xamarin 强制执行 msal<client/app ID>://auth 的重定向 URI 结构。我会检查您的应用注册以确保它已注册为本机/移动应用重定向 URI。

标签: xamarin login xamarin.forms msal


【解决方案1】:

解决方法是按照Xamarin Forms Sample App 的设置方式进行设置,因此我不得不在 Android Manifest 中添加更多设置代码,并且需要设置重定向 URI。 AcquireTokenAsync(IEnumerable<string> scopes 不再适用于 Xamarin 应用程序,所以我不得不使用 AcquireTokenAsync(IEnumerable<string> scopes, UIParent parent)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2014-07-11
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多