Android的MSAL:SHA-256摘要错误(AuthenticationCallback.class),在使用androidx即时运行期间
有没有办法让MSAL与Instant Run和AndroidX一起工作 Microsoft身份验证库0.2.1在Android Studio中可以即时运行,但在启用即时运行时迁移到androidx后会出现生成错误 Java编译器在生成过程中报告了以下错误: java.lang.SecurityException:com/microsoft/identity/client/AuthenticationCallback.class的SHA-256摘要错误 复制:Android的MSAL:SHA-256摘要错误(AuthenticationCallback.class),在使用androidx即时运行期间,android,msal,androidx,android-instant-run,Android,Msal,Androidx,Android Instant Run,有没有办法让MSAL与Instant Run和AndroidX一起工作 Microsoft身份验证库0.2.1在Android Studio中可以即时运行,但在启用即时运行时迁移到androidx后会出现生成错误 Java编译器在生成过程中报告了以下错误: java.lang.SecurityException:com/microsoft/identity/client/AuthenticationCallback.class的SHA-256摘要错误 复制: 创建一个新的Android Stud
- android.useAndroidX=true
- android.enableJetifier=true
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)
}
}
class MainActivity:AppCompatActivity(){
val CLIENT_ID=“”
val SCOPES=arrayOf(“https://graph.microsoft.com/User.Read")
私有lateinit变量sampleApp:PublicClientApplication
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
sampleApp=PublicClientApplication(
这个.applicationContext,
客户识别码
)
acquireToken(this,SCOPES,getAuthInteractiveCallback());
}
private fun getAuthInteractiveCallback():AuthenticationCallback{
返回对象:AuthenticationCallback{
成功时覆盖乐趣(authenticationResult:authenticationResult){
val accessToken=authenticationResult.getAccessToken()
}
重写错误(异常:MSAlexException){
if(例外情况为MsalClientException){
/*MSAL内部异常,MsalError.java内部更多信息*/
}else if(异常为MsalServiceException){
/*与STS通信时出现异常,可能是配置问题*/
}
}
重写fun onCancel(){
/*用户取消了身份验证*/
}
}
}
/*处理来自系统浏览器的重定向*/
重写activityResult(请求代码:Int,结果代码:Int,数据:Intent?){
sampleApp.handleInteractiveRequestRedirect(请求代码、结果代码、数据)
}
}
编辑:GitHub问题我正在我的Android应用程序中集成广告登录,当我启用Instant Run时,我开始遇到这个问题。因此,我再次禁用了Instant Run,现在一切正常。现在似乎可以工作了(不知道它是什么时候修复的,也不知道如何修复的,但MSAL 0.2.2和0.3.1-alpha似乎都可以与2019年4月10日Android Studio的版本一起工作)。如Github上所述,这是一个已知的问题,但产品团队尚未对其进行测试。