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 构建的项目不会部署在 6.1 服务器上,说我需要使用 6.0
IBM Worklight 6.1 - iOS 6.1 上的 App Center 错误