I have a game written in TypeScript uploaded into Facebook Instant Games. I have a super simple call to obtain real timestamp from my own server.
I managed to get it working after uploading a build into InstantGames and after facing issues with CORS. I get proper response with status 200.
However, there is an issue with the same request, but from InstantGame played through Messenger app, both on iOS and android. I tried to put as match logs as possible, with no reasonable answer.
I am creating XMLHttpRequest(), when the game is started on desktop browser I finally get:
xhr.readyState == 4 and xhr.status == 200. 
I am using https url.
On mobile Messenger, I get only xhr.readyState == 4 and xhr.status == 0.
I also tried with moving from XMLHttpRequest() into fetch(), same behavior - on desktop browser it works fine, on mobile I get:
I/chromium(22226): [INFO:CONSOLE(0)] "Uncaught (in promise) TypeError: Failed to fetch"
Server code:
<?php
header('Access-Control-Allow-Origin: https://my-app-id.apps.fbsbx.com');
$date = new DateTime();
echo $date->getTimestamp();
?>
Any ideas why is it failing when played by mobile Messenger app and how to fix it properly?
 
                        
I have finally solved this issue some months ago, so I'm sharing an answer with you.
The clue was, that I was testing this on
Operabrowser (on desktop), when I finally tested it onChrome, then I had same errors like on mobileMessengerwhich usesChromium.The problem was, that my own server didn't have a proper own certificate for this exact domain.
Chromewas forcing use ofhttpsand then it was failing because of a certificate owned by hosting, pointing to a hostserver domain instead of my own.Usage of my own certificate solved the issue.