无效的请求正文 - IBM MobileFirst 8.0 中 WLAuthorizationManager.obtainAccessToken 的 JSON 映射失败

Posted

技术标签:

【中文标题】无效的请求正文 - IBM MobileFirst 8.0 中 WLAuthorizationManager.obtainAccessToken 的 JSON 映射失败【英文标题】:Invalid request body - JSON mapping failed for WLAuthorizationManager.obtainAccessToken in IBM MobileFirst 8.0 【发布时间】:2021-05-04 06:52:29 【问题描述】:

我将 Angular 与 IBM MobileFirst 8.0 结合使用。我遇到了 WLAuthorizationManager.obtainAccessToken() 的问题

我正在使用下面的代码。

WLAuthorizationManager.obtainAccessToken()
    .then(
        function (token) 
          console.log(token);
        ,
        function (res) 
          console.log(res);
        )

但是,我总是收到以下错误。

回应:

errorCode: "400"
errorMsg: "Bad Request"
responseHeaders: cache-control: "[no-store, no-cache, must-revalidate]", connection: "[close]", content-language: "[en-US]", content-security-policy: "[default-src 'self';]", content-type: "[application/json]", …
responseText: "\"Invalid request body - JSON mapping failed.\""
status: 400
statusText: "Bad Request

版本详情:

cordova-plugin-mfp:8.0.2021031007

ibm-mfp-web-sdk: 8.0.2021011205

项目已在 mfp 控制台中创建。

任何帮助将不胜感激。谢谢!

【问题讨论】:

服务器版本是多少? 【参考方案1】:

iFix 8.0.0.0-MFPF-IF202010151343 在与旧版 Mobile Foundation 服务器的兼容性方面引入了一项重大更改。如果您的应用使用以下任何 SDK - androidios 或 Cordova 版本 8.0.2020101412 或更高版本,则需要将您的服务器版本升级到 8.0.2020101311 或更高版本。

APAR PH30473 STRENGTHENING PRE-AUTH ENDPOINT 需要这样做,它会更改 Mobile Foundation SDK 和 Mobile Foundation 服务器之间的通信协议。

如果您无法升级服务器,作为兼容性措施,您可以选择将较新的 SDK(版本 8.0.2020101412 或更高版本)与旧版本的 Mobile Foundation 服务器(8.0.2020101311 之前的版本)一起使用通过添加以下配置:

原生 Android 应用 将以下行添加到您的 mfpclient.properties 文件中: sdkProtocolVersion=1

原生 iOS 应用 将以下条目添加到您的 mfpclient.plist

名称 - sdkProtocolVersion

类型 - 数字

值 - 1

Cordova 应用程序 在项目的 config.xml 部分下添加以下行。

mfp:SDKProtocolVersion1 推荐的做法是升级服务器,不要使用上面提到的兼容性配置。

网络应用:

在 wlInitOptions 中添加 sdkProtocolVersion : '1'

更多详情请看这里https://mobilefirstplatform.ibmcloud.com/blog/2018/05/18/8-0-master-ifix-release/#changes-in-this-ifix-4

解决您的问题:

将应用程序与新版本的应用程序连接 + 将 sdkProtocolVersion 设置为 1

或者

将服务器升级到最新版本。

【讨论】:

非常感谢!现在可以在添加 后接收令牌。另一个问题,WL.ClientMessages 是未定义的。关于如何在此处加载 messages.json 文件的任何想法? 什么时候看到错误 WL.ClientMessages is undefined ?哪些多功能一体机功能? 直接更新。当它尝试从 WL.ClientMessages 读取值时。我没有得到直接更新,因为它在 WL.ClientMessages 上引发错误未定义 @rucha 你在 Android 或 iOS 上看到了吗?您能否向 IBM 开立 PMR/案例。

以上是关于无效的请求正文 - IBM MobileFirst 8.0 中 WLAuthorizationManager.obtainAccessToken 的 JSON 映射失败的主要内容,如果未能解决你的问题,请参考以下文章

IBM Mobilefirst Java HTTP Adapter 中的多部分文件上传

在 IBM 容器上运行 IBM MobileFirst Platform Foundation

IBM-Mobilefirst 意外错误中的推送通知

IBM Mobilefirst 和 IBM Bluemix

IBM MobileFirst 证书固定

Bluemix 的 ibm-mobilefirst-starter 容器 - 添加新的 http 适配器不起作用