Android 的 MSAL:SHA-256 摘要错误 (AuthenticationCallback.class) 在 Instant 运行 期间与 androidx

MSAL for Android: SHA-256 digest error (AuthenticationCallback.class) during Instant Run with androidx

有没有办法让 MSAL 与 Instant 运行 和 AndroidX 协同工作?

Microsoft 身份验证库 0.2.1 与 Android Studio 开箱即用,但在启用 Instant 运行 后迁移到 androidx 后会出现构建错误。

Java 编译器在构建过程中报告了以下错误:

java.lang.SecurityException: SHA-256 digest error for com/microsoft/identity/client/AuthenticationCallback.class

转载:

  1. 创建新的 Android Studio 项目
  2. 确保即时 运行 已启用(文件 > 设置 > 构建、执行、部署 > 即时 运行)
  3. 按照此处的说明进行操作:https://github.com/AzureAD/microsoft-authentication-library-for-android
  4. 调试。事情应该会顺利进行。
  5. 将以下内容添加到 gradle.properties:
    • android.useAndroidX=真
    • android.enableJetifier=真
  6. 重构 > 迁移到 AndroidX(无关:如果需要修复布局等)
  7. 尝试开始调试
  8. 现在编译器报告上述错误
  9. 禁用即时 运行
  10. 调试
  11. 现在一切顺利。

我的 MainActivity 如下所示:

class MainActivity : AppCompatActivity() {

val CLIENT_ID = "<My Client Id>"
val SCOPES = arrayOf("https://graph.microsoft.com/User.Read")
private lateinit var sampleApp: PublicClientApplication

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    sampleApp = PublicClientApplication(
        this.applicationContext,
        CLIENT_ID
    )
    sampleApp.acquireToken(this, SCOPES, getAuthInteractiveCallback());
}

private fun getAuthInteractiveCallback(): AuthenticationCallback {
    return object : AuthenticationCallback {
        override fun onSuccess(authenticationResult: AuthenticationResult) {
            val accessToken = authenticationResult.getAccessToken()
        }
        override fun onError(exception: MsalException) {
            if (exception is MsalClientException) {
                /* Exception inside MSAL, more info inside MsalError.java */
            } else if (exception is MsalServiceException) {
                /* Exception when communicating with the STS, likely config issue */
            }
        }
        override fun onCancel() {
            /* User canceled the authentication */
        }
    }
}

/* Handles the redirect from the System Browser */
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    sampleApp.handleInteractiveRequestRedirect(requestCode, resultCode, data)
}
}

编辑:GitHub 问题 https://github.com/AzureAD/microsoft-authentication-library-for-android/issues/354

我正在我的 Android 应用程序中集成 AD 登录,当我启用 Instant 运行 时,我开始遇到这个问题。所以我再次 Disabled Instant 运行 现在一切正常。

现在似乎可以使用(不知道它何时修复或如何修复,但 MSAL 0.2.2 和 0.3.1-alpha 似乎都适用于 Android Studio 的 2019 年 4 月 10 日版本)。