Worklight 6.1部署到Windows Phone 8:AUTHENTICATION_ERROR,deviceId null

时间:2014-05-22 14:58:39

标签: angularjs windows-phone-8 deployment ibm-mobilefirst hybrid-mobile-app

大家下午好,周一 我在将移动应用程序部署到Windows Phone 8时遇到错误。

  • 这是一个部署到windows8phone,android和iphone的Worklight 6.1.0.1混合应用程序。

  • 这是一个用Angularjs编写的应用程序。

构建并部署到WL服务器是可以的,所有适配器的部署都可以。应用程序在iphone和android(设备)上正常运行。 通过使用WL模拟器,该应用程序可以正常使用Windows 8手机(我们正在测试诺基亚Lumia 820设备)。

然后,我打开视觉工作室项目(vs express 2013),包含在windowsphone8环境的本机文件夹中,并尝试在官方MS模拟器上直接在设备上运行。

应用程序在设备上启动后,我在WL服务器控制台中收到错误:

  

[错误] FWLSE0059E:登录领域   ' WLDeviceNoProvisioningLoginModule'失败。字段" deviceId"的   实例" null"包含空值;此字段的元数据   指定空值是非法的。[project MobileBanking]字段   " DEVICEID"实例" null"包含空值;的元数据   该字段指定空值是非法的。嵌套异常是      org.apache.openjpa.persistence.InvalidStateException:该字段   " DEVICEID"实例" null"包含空值;的元数据   此字段指定空值是非法的。 [错误] FWLSE0117E:   错误代码:4,错误说明:AUTHENTICATION_ERROR,错误消息:   使用loginModule执行身份验证时发生错误   WLDeviceNoProvisioningLoginModule,用户身份不可用。   [project MobileBanking] [project MobileBanking]

更多信息 - 身份验证。 我有一个领域和一个安全测试:

<realms>
   <realm loginModule="AuthLoginModule" name="WSAuthRealm">
   <className>com.worklight.integration.auth.AdapterAuthenticator</className>
    <parameter name="login-function" value="AuthAdapter.onAuthRequired" />
    <parameter name="logout-function" value="AuthAdapter.onLogout" />
   </realm>
</realms>

<securityTests>
    <customSecurityTest name="AuthAdapter-securityTest">
      <test isInternalUserID="true" realm="WSAuthRealm" />
    </customSecurityTest>
</securityTests>

我们还尝试了以下可能的解决方案:

  • 导入IBM WL官方演示项目:singleStepAuth和doubleStepAuth。它们已正确部署在设备上并正常工作。
  • 从WL模拟器控制台获取URL并直接从移动设备的Windows资源管理器中打开它,效果很好。
  • 尝试将所有WL调用减少到服务器并部署到设备,但应用程序仍然阻止。
  • 从Eclipse中的WL应用程序中删除并重新生成了windowsphone8环境,但没有任何更改。

也许麻烦在于本机wp8的坚果壳或者某些环境参数配置。

非常感谢。

1 个答案:

答案 0 :(得分:1)

最后我们解决了。
这是关于$ routeProvider的一个angularjs问题 - &gt; templateUrl。 虽然看起来不是WL的问题。

使用windowsphone8时,Partials Url的根目录必须是 www ,即:

对于Android和Iphone,partials html的正确路径是

app.config(function($routeProvider, $locationProvider) {
    $routeProvider.when('/', {
        templateUrl : "partials/login.html",
        controller : "LoginController"
    });
...

对于WindowsPhone8,路径必须是绝对路径

app.config(function($routeProvider, $locationProvider) {
    $routeProvider.when('/', {
        templateUrl : "www/default/partials/login.html",
        controller : "LoginController"
    });
...

无论如何,错误消息仍然存在。但一切正常。