MSAL для Android: ошибка дайджеста SHA-256 (AuthenticationCallback.class) при мгновенном запуске с androidx
Есть ли способ заставить MSAL работать вместе с Instant Run и AndroidX?
Microsoft Authentication Library 0.2.1 отлично работает "из коробки" с Android Studio, но выдает ошибки сборки после перехода на androidx, когда включен Instant Run.
Во время сборки компилятор Java сообщает о следующей ошибке:
java.lang.SecurityException: ошибка дайджеста SHA-256 для com/microsoft/identity/client/AuthenticationCallback.class
Репро:
- Создать новый проект Android Studio
- Убедитесь, что включен "Мгновенный запуск" ("Файл"> "Настройки"> "Построение, выполнение, развертывание"> "Мгновенный запуск").
- Следуйте инструкциям здесь: https://github.com/AzureAD/microsoft-authentication-library-for-android
- Debug. Все должно работать хорошо.
- Добавьте следующее в gradle.properties:
- android.useAndroidX = верно
- android.enableJetifier= верно
- Refactor > Migrate to AndroidX (не связано: при необходимости исправьте макеты и т. Д.)
- Попробуйте начать отладку
- Теперь компилятор сообщает об ошибках, упомянутых выше
- Отключить мгновенный запуск
- отлаживать
- Теперь все работает хорошо.
Моя 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
0 ответов
Я интегрирую регистрацию AD в свое приложение для Android, и когда я включил Instant Run, я начал получать эту проблему. Поэтому я снова отключил Instant Run, и теперь все работает нормально.
Кажется, работает сейчас (не знаю, когда это было исправлено и как, но MSAL 0.2.2 и 0.3.1-alpha, похоже, работают со сборкой Android Studio от 10 апреля 2019 года).