Messenger InstantGames-Web请求在Messenger网页上运行正常,但通过Messenger移动应用播放时失败

时间:2018-11-26 19:34:16

标签: android ios facebook-messenger facebook-instant-games

我有一个用TypeScript编写的游戏上传到Facebook Instant Games。我有一个超级简单的电话,可以从我自己的服务器上获取真实的timestamp

在将构建文件上传到InstantGames中并且遇到了CORS问题后,我设法使其正常运行。我收到status 200的正确答复。

但是,相同的请求存在一个问题,但是在iOS和android上,通过Instant Messenger应用程序播放的InstantGame都有问题。我试图尽可能地放入匹配日志,没有合理的答案。

我正在创建XMLHttpRequest(),当在桌面浏览器上启动游戏时,我终于得到了:

xhr.readyState == 4xhr.status == 200

我正在使用https网址。

在移动Messenger上,我只有xhr.readyState == 4 xhr.status == 0

我也尝试过从XMLHttpRequest()移到fetch(),同样的行为-在台式机浏览器上运行正常,在移动设备上,我得到了:

I/chromium(22226): [INFO:CONSOLE(0)] "Uncaught (in promise) TypeError: Failed to fetch"

服务器代码:

<?php
header('Access-Control-Allow-Origin: https://my-app-id.apps.fbsbx.com');
$date = new DateTime();
echo $date->getTimestamp();
?>

有什么想法为什么在移动Messenger应用程序播放时会失败以及如何正确修复它?

2 个答案:

答案 0 :(得分:0)

不知道这是否是您所要的内容,但Messenger应用不喜欢HTTP / 2。弄清楚这一点,我失去了几个小时。

答案 1 :(得分:0)

几个月前我终于解决了这个问题,所以我正在与您分享答案。

线索是,我在Opera浏览器(在台式机上)上对此进行了测试,当我最终在Chrome上对其进行测试时,我遇到了与移动Messenger上相同的错误,使用Chromium

问题是,我自己的服务器没有针对该确切域的适当证书。 Chrome强制使用https,然后失败,因为托管拥有的证书指向了主机服务器域而不是我自己的域。

使用我自己的证书解决了这个问题。