Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android的MSAL:SHA-256摘要错误(AuthenticationCallback.class),在使用androidx即时运行期间_Android_Msal_Androidx_Android Instant Run - Fatal编程技术网

Android的MSAL:SHA-256摘要错误(AuthenticationCallback.class),在使用androidx即时运行期间

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

有没有办法让MSAL与Instant Run和AndroidX一起工作

Microsoft身份验证库0.2.1在Android Studio中可以即时运行,但在启用即时运行时迁移到androidx后会出现生成错误

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

java.lang.SecurityException:com/microsoft/identity/client/AuthenticationCallback.class的SHA-256摘要错误

复制:

  • 创建一个新的Android Studio项目
  • 确保启用即时运行(文件>设置>生成、执行、部署>即时运行)
  • 请按照此处的说明操作:
  • 调试。事情会好起来的
  • 将以下内容添加到gradle.properties:
    • android.useAndroidX=true
    • android.enableJetifier=true
  • 重构>迁移到AndroidX(不相关:如果需要,修复布局等)
  • 尝试开始调试
  • 现在,编译器报告上述错误
  • 禁用即时运行
  • 调试
  • 现在一切顺利
  • 我的主要活动如下:

    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上所述,这是一个已知的问题,但产品团队尚未对其进行测试。