android 模拟器在 mobilefirst 上的 shouldStartProvisioning 错误

Posted

技术标签:

【中文标题】android 模拟器在 mobilefirst 上的 shouldStartProvisioning 错误【英文标题】:shouldStartProvisioning error for android simulator on mobilefirst 【发布时间】:2015-12-16 16:00:37 【问题描述】:

最近将应用从 Worklight 6.2 迁移到 7.0。在本地运行的移动 Web 应用程序预览上,一切都很好。不工作的是使用 mobilefirst 的 eclipse 上的 android 预览。启动画面没有完全加载。我目前看到的唯一错误是

ReferenceError: shouldStartProvisioning is not defined
    initCallback/<()
     worklight.js:9680
    WL.DeviceAuth.__isCertificateExists()
     worklight.js:18942
    initCallback()
     worklight.js:9667
    __WLClient/this.createProvisioningChallengeHandler/challengeHandler.handleChallenge/<()
     worklight.js:9643
    __WLDeviceAuth/this.init/<()
     worklight.js:6662
    WL.DeviceAuth.__initDeviceAuthManager()
     worklight.js:18953
    __WLDeviceAuth/this.init()
     worklight.js:6662
    __WLClient/this.createProvisioningChallengeHandler/challengeHandler.handleChallenge()
     worklight.js:9642
    AbstractChallengeHandler/this.startChallengeHandling()
     worklight.js:9358
    executeChallenge()
     worklight.js:9281
    __WLClient/this.checkResponseForChallenges()
     worklight.js:9183
    window.WLJSX.Ajax.WLRequest<.onWlFailure()
     worklight.js:3606
    bind/<()
     worklight.js:957
    window.WLJSX.Ajax.Request<.respondToReadyState()
     worklight.js:1177
    window.WLJSX.Ajax.Request<.onStateChange()
     worklight.js:1112

这是来自 worklight.js

function initCallback(result) 
                if (challengeHandler.isCertificateChallengeResponse(challenge)) 
                    WL.DeviceAuth.saveCertificate(
                    //success callback
                    function() 
                        var deviceAuthSettings = 
                            token : challenge.ID.token,
                            isProvisioningEnabled : true,
                            provisioningEntity : challenge.ID.entity
                        ;
                        challengeHandler.getDeviceAuthDataAsync(deviceAuthSettings);
                    ,
                    //failure callback
                    function(err) 
                        WL.DiagnosticDialog.showDialog(WL.ClientMessages.wlclientInitFailure, WL.ClientMessages.saveCertificateFailure, false, true, , err);
                    , challenge.ID.entity, challenge.certificate, challengeHandler.realm);
                    //handle save certificate
                 else 
                    //handler device auth
                    WL.DeviceAuth.__isCertificateExists(challenge.ID.entity,
                    // success callback
                    function(result) 
                        var isCertificateExists = WL.Utils.getCordovaPluginResponseObject(result, "isCertificateExists");
                        isCertificateExists = ("true" == isCertificateExists);
                        if (isCertificateExists) 
                            var deviceAuthSettings = 
                                token : challenge.ID.token,
                                isProvisioningEnabled : true,
                                provisioningEntity : challenge.ID.entity
                            ;
                            challengeHandler.getDeviceAuthDataAsync(deviceAuthSettings);
                         else 
                            shouldStartProvisioning();
                        ;
                    ,
                    // failure callback
                    function() 
                        WL.DiagnosticDialog.showDialog(WL.ClientMessages.wlclientInitFailure, WL.ClientMessages.deviceAuthenticationFail, false, true, challenge);
                    );

                    function shouldStartProvisioning() 
                        if (!challenge.ID.allowed) 
                            //submiting an empty answer so it will resend, and then get the 401 again, hopefully is allowed
                            challengeHandler.submitChallengeAnswer();
                         else 
                            if (challengeHandler.createCustomCsr != undefined) 
                                challengeHandler.createCustomCsr(challenge.ID);
                             else 
                                WL.Logger.warn("Function createJsonCsr() is deprecated. Use createCustomCsr() instead.");
                                challengeHandler.createJsonCsr(challenge.ID.entity, challengeHandler.realm, token:challenge.ID.token);
                            
                        
                    

                
            

        ;

【问题讨论】:

添加了更多信息。显然 shouldStartProvisioning 存在于这个文件中,它也不是可编辑的。 @Iden_ader 【参考方案1】:

我进行了一些内部和外部搜索,但没有找到任何有关此类问题的先前报告。我有一些建议可能有助于进一步诊断问题。首先,新项目是否会出现问题,或者只是迁移的项目会出现问题?你能否检查一下公共资源预览的输出,看看是否发生了同样的错误?只是想确保错误对于失败的场景是唯一的。接下来,您使用的 MobileFirst 的完整构建级别是多少?在 Eclipse 中,选择帮助 -> 关于 -> [MobileFirst 图标]。

【讨论】:

由于此内容不是答案,您应该将其放在问题的评论中。 *** 的工作方式与新闻组或论坛稍有不同——后续读者应该能够清楚地识别问答。其他所有内容都属于评论。您可以在帮助中心找到更多信息 :-) 这个问题只出现在这个项目中,一个新的启动就好了。此问题适用于 Android 和 iO,因为移动 Web 应用程序按预期启动。 MobileFirst 版本 7.0.0.00 扎卡里,感谢您的反馈。关于 MobileFirst 的版本,它还应该包含 yyyymmdd 形式的构建级别,例如 7.0.0.00-20150710-1555。如果您使用的版本不是最新的,我建议从 IBM Fix Central 站点 (www-933.ibm.com/support/fixcentral) 应用最新的 ifix。如果在那之后问题仍然存在,那么下一步将是通过产品支持提出 PMR。谢谢。

以上是关于android 模拟器在 mobilefirst 上的 shouldStartProvisioning 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Google Appengine 中部署 MobileFirst 混合应用程序

MobileFirst Platform 适配器调用在模拟器中失败

MobileFirst Eclipse 未检测到更改

升级到 iOS 9 和 MobileFirst 7.1 后无法登录设备或模拟器上的应用程序

Android Studio 与 MobileFirst 的集成

未调用 MobileFirst 地理触发器“dwellInside”回调