MSAL для Android: ошибка дайджеста SHA-256 (AuthenticationCallback.class) при мгновенном запуске с androidx - PullRequest
0 голосов
/ 02 декабря 2018

Есть ли способ заставить MSAL работать вместе с Instant Run и AndroidX?

Microsoft Authentication Library 0.2.1 отлично работает "из коробки" с Android Studio, но выдает ошибки сборки после перехода на androidxпри включенном Мгновенном запуске.

Во время сборки компилятор Java сообщает о следующей ошибке:

java.lang.SecurityException: ошибка дайджеста SHA-256 для com / microsoft / identity /client / AuthenticationCallback.class

Repro:

  1. Создать новый проект Android Studio
  2. Убедитесь, что включен Instant Run (Файл> Настройки> Построить, Выполнить, Развертывание> Мгновенный запуск)
  3. Следуйте инструкциям здесь: https://github.com/AzureAD/microsoft-authentication-library-for-android
  4. Отладка.Все должно работать нормально.
  5. Добавьте в gradle.properties следующее:
    • android.useAndroidX = true
    • android.enableJetifier = true
  6. Refactor> Migrate to 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

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Кажется, работает сейчас (не знаю, когда это было исправлено и как, но MSAL 0.2.2 и 0.3.1-alpha, похоже, работают со сборкой Android Studio от 10 апреля 2019 года).

0 голосов
/ 09 апреля 2019

Я интегрирую регистрацию в AD в своем приложении для Android, и когда я включил Instant Run, я начал получать эту проблему.Поэтому я снова отключил мгновенный запуск и теперь все работает нормально.

...