Android.Support.CustomTabs.CustomTabsIntent.LaunchUrl方法未找到。

3

我正在尝试使用 Microsoft.Identity.Client v1.1.0-preview 来通过Microsoft认证用户。当我执行 App.IdentityClientApp.AcquireTokenAsync 时,即使我在其周围加上了try/catch,它仍会终止应用程序。

Android设备日志显示:

Info 6756 MonoDroid System.MissingMethodException: 
  Method 'Android.Support.CustomTabs.CustomTabsIntent.LaunchUrl' not found.
  at Android.App.Activity.n_OnResume (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <e975227ac8644a30bb0866117325de0d>:0 
  at (wrapper dynamic-method) System.Object:40d0e467-e2e5-447f-a0b5-87cb60ce49a7 (intptr,intptr)  

如果您只尝试使用Release模式进行构建,它将无法完成。输出窗口中会显示类似的错误。

Mono.Linker.MarkException: 
Error processing method: 'System.Void Microsoft.Identity.Client.AuthenticationActivity::OnResume()' in assembly:
 'Microsoft.Identity.Client.dll' ---> Mono.Cecil.ResolutionException: 
  Failed to resolve System.Void
  Android.Support.CustomTabs.CustomTabsIntent::LaunchUrl(Android.App.Activity,Android.Net.Uri)

有人知道他们是否已经放弃了这个代码,或者更好的是,有没有想法让它工作?它以前适用于iOS,但现在即使在登录过程完成后也存在一些问题。


你是否将 microsoft.identity.client.BrowserTabActivity 添加到清单文件中?这可能会导致应用程序终止。 - cvanbeek
你正在运行的设备是否具有支持Chrome或Chrome自定义选项卡的Web浏览器?它可能正在尝试弹出浏览器,但因为设备/模拟器未安装支持浏览器而失败。 - Daniel Dobalian
我已经在清单文件中定义了一个名为microsoft.identity.client.BrowserTabActivity的活动。我已经在安装有Chrome的物理Galaxy s4和没有Chrome但具有默认浏览器功能的Android模拟器上尝试过,但两者都以相同的方式失败,引用了缺失的方法。 - W.R. Matthiesen
1个回答

0

我最近在Android上使用Microsoft.Identity.Client时遇到了一些问题,请注意以下几点:

  • 请使用最新的夜间构建版本,而不是预览版
  • 确保您满足所有要求:Android Lollipop+和已安装Google Chrome
  • 仔细阅读官方指南
  • 请关注GitHub项目页面,我在那里找到了大部分解决方案

似乎在清单中存在自定义URL方案的问题,因此我首先会重新检查它。


由于预览应该是“受支持的”,并且它可以在iOS上工作,因此我不想回到alpha版本。根据iOS版本的工作方式,我似乎甚至还没有进行到足够的进程,以便URL方案成为问题。我将尝试在模拟器中安装Chrome。 - W.R. Matthiesen
我纠正了自己——应该是“夜间构建”,而不是“alpha版”。所以你实际上不会回退,而是向前。否则,你将被迫使用旧版本的Xamarin.Forms。 - EvZ
这样更有意义,但是我在哪里找到夜间构建版本?我正在使用NuGet获取预览,但它没有显示出来。 - W.R. Matthiesen
请查看 https://www.myget.org/feed/aad-clients-nightly/package/nuget/Microsoft.Identity.Client。 - EvZ
经过一些微调,它似乎可以工作了。非常感谢。虽然它是通过MainActivity中的OnActivityResult方法驱动的,Google也是如此。对于Google,我可以指定一个特定的requestCode,以便我可以识别它。这只有0。能够识别它将会很有帮助。你知道这什么时候会从Alpha版转移到更高版本吗? - W.R. Matthiesen
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接