服务未注册:com.microsoft.identity.common.internal.ui.browser.CustomTabsManager$1@4af7a6e

Service not registered: com.microsoft.identity.common.internal.ui.browser.CustomTabsManager$1@4af7a6e

我在 android 应用程序中使用 msal 库,但在许多设备上都会发生此崩溃

我的用户代理不能是 WEBVIEW

Fatal Exception: java.lang.IllegalArgumentException: Service not registered: com.microsoft.identity.common.internal.ui.browser.CustomTabsManager@4af7a6e
       at android.app.LoadedApk.forgetServiceDispatcher(LoadedApk.java:1160)
       at android.app.ContextImpl.unbindService(ContextImpl.java:1475)
       at android.content.ContextWrapper.unbindService(ContextWrapper.java:644)
       at com.microsoft.identity.common.internal.ui.browser.CustomTabsManager.unbind(CustomTabsManager.java:164)
       at com.microsoft.identity.common.internal.ui.browser.BrowserAuthorizationStrategy.dispose(BrowserAuthorizationStrategy.java:182)
       at com.microsoft.identity.common.internal.ui.browser.BrowserAuthorizationStrategy.completeAuthorization(BrowserAuthorizationStrategy.java:157)
       at com.microsoft.identity.common.internal.controllers.LocalMSALController.completeAcquireToken(LocalMSALController.java:258)
       at com.microsoft.identity.common.internal.commands.InteractiveTokenCommand.notify(InteractiveTokenCommand.java:77)
       at com.microsoft.identity.common.internal.controllers.CommandDispatcher.completeInteractive(CommandDispatcher.java:608)
       at com.microsoft.identity.common.internal.controllers.CommandDispatcher.access00(CommandDispatcher.java:83)
       at com.microsoft.identity.common.internal.controllers.CommandDispatcher.onReceive(CommandDispatcher.java:565)
       at androidx.localbroadcastmanager.content.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:313)
       at androidx.localbroadcastmanager.content.LocalBroadcastManager.handleMessage(LocalBroadcastManager.java:121)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:148)
       at android.app.ActivityThread.main(ActivityThread.java:7325)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

这是我的 json 配置文件。

  "client_id": "client_id",
  "authorization_user_agent": "BROWSER",
  "account_mode": "MULTIPLE",
  "redirect_uri": "redirect_uri",
  "authorities": [
    {
      "type": "B2C",
      "authority_url": "authority_url",
      "default": true
    },
    {
      "type": "B2C",
      "authority_url": "authority_url"
    }
  ],
  "browser_safelist": [
    {
      "browser_package_name": "com.mi.globalbrowser",
      "browser_signature_hashes": [
        "g7zGEnZipieE6ZyBA4Bz00kxU8h0F9QTwPLL-dnRVwngI0FJWJiD3rCEJsIQ_VK064SNdxzqggnnnAqT8LI89A=="
      ]
    }
  ]
}

下面列出了一些发生崩溃的设备

moto g(6) 播放

moto z3 play

Moto G(4) Plus

LG K40S

LG Q60

ZenFone Max Shot (ZB634KL)

还有许多其他未在此处列出的,包括小米、三星和 onePlus

这是 microsoft-authentication-library-for-android 中的已知错误。

您可以通过编辑 Raw 文件夹中的 auth_config.json 文件进行身份验证,并将用户代理更改为此 authorized_user_agentWEBVIEW.

您可以使用 Webview 而不是浏览器对用户进行身份验证,这样您的应用就不会崩溃。

看看这个 pull-request

我将 MSAL 更新到 2.2.1 版,现在它工作正常。