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

Posted

技术标签:

【中文标题】Worklight 6.1 部署到 Windows Phone 8:AUTHENTICATION_ERROR,deviceId null【英文标题】:Worklight 6.1 deploy to windows phone 8: AUTHENTICATION_ERROR, deviceId null 【发布时间】:2014-05-22 14:58:39 【问题描述】:

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

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

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

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

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

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

[错误] FWLSE0059E: 登录到领域 “WLDeviceNoProvisioningLoginModule”失败。 “deviceId”字段 实例“null”包含一个空值;该字段的元数据 指定空值是非法的.. [project MobileBanking] 字段 实例“null”的“deviceId”包含一个空值;元数据 该字段指定空值是非法的。嵌套异常是 org.apache.openjpa.persistence.InvalidStateException:该字段 实例“null”的“deviceId”包含一个空值;元数据 该字段指定空值是非法的。 [错误] FWLSE0117E: 错误代码:4,错误描述:AUTHENTICATION_ERROR,错误信息: 使用 loginModule 执行身份验证时出错 WLDeviceNoProvisioningLoginModule,用户身份不可用。 [手机银行项目] [手机银行项目]

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

<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 explorer打开,效果很好。 尝试将所有对服务器的 WL 调用减少到最低限度并部署到设备,但应用程序仍然阻塞。 从 Eclipse 的 WL 应用程序中删除并重新生成了 windowsphone8 环境,但没有任何变化。

也许问题出在原生 wp8 简而言之或某些环境参数配置中。

非常感谢。

【问题讨论】:

在 Visual Studio 中,转到属性视图 > 功能并验证 ID_CAP_IDENTITY_DEVICE 是否已勾选(启用)。看看有没有帮助。 谢谢 Idan,但它仍然无法正常工作。我尝试勾选 ID_CAP_IDENTITY_DEVICE,但没有成功,当我勾选 ID_CAP_IDENTITY_USER 时也是如此。错误是一样的。还有什么想法吗?谢谢 【参考方案1】:

终于解决了。 这是关于 $routeProvider -> templateUrl 的 angularjs 问题。 虽然看起来不是 WL 问题。

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

对于 Android 和 Iphone,部分 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"
    );
...

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

【讨论】:

以上是关于Worklight 6.1 部署到 Windows Phone 8:AUTHENTICATION_ERROR,deviceId null的主要内容,如果未能解决你的问题,请参考以下文章

将 windows phone 8.0 phonegap 应用程序从 worklight 6.0 移动到 worklight 6.1

IBM Worklight 6.1 - 构建和部署不可用?

IBM Worklight - 基于 6.1 构建的项目不会部署在 6.1 服务器上,说我需要使用 6.0

IBM Worklight 6.1 - iOS 6.1 上的 App Center 错误

IBM Worklight - 如何从 Mac OS 的 6.2 切换回 6.1 版? [关闭]

Worklight 6.1:如何将 EULA 添加到混合应用程序