question

Ryan Janse van Rensburg avatar image
Ryan Janse van Rensburg asked

Trying to integrate PlayFab's Facebook instant game services with Gdevelop?

Hi,

I’m trying to integrate PlayFab's Facebook instant game services into my Instant game built in Gdevelop but cant seem to get it to work! I’ve edited the Index.html file of my exported game to include the PlayFab SDK and what i think is the necessary code for it to work but nothing happens. My game runs fine and connects to my Facebook leaderboard but it’s not connecting to PlayFab. Any help and advice would be appreciated.

My edited Index.html file is posted below.

Thanks
Ryan

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8"/>

    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">

    <meta name="theme-color" content="#000000" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

    <style>
        body {
            margin: 0;
            padding: 0;
            background-color: #000000;
            overflow: hidden;
        }
        #canvasArea {
            margin-left: auto;
            margin-right: auto;
            overflow: hidden;
        }

        @font-face{ font-family : "gdjs_font_Kenney Future Narrow.ttf"; src : url('Kenney Future Narrow.ttf') format('truetype'); }
@font-face{ font-family : "gdjs_font_Knockout-69.otf"; src : url('Knockout-69.otf') format('truetype'); }

    </style>
    
    <!-- Facebook Instant Games SDK (see https://developers.facebook.com/docs/games/instant-games/getting-started/quickstart) -->
    <script src="https://connect.facebook.net/en_US/fbinstant.6.0.js"></script>
    <!-- Load PlayFab SDK -->    
    <!----script src="https://download.playfab.com/PlayFabClientApi.js"></script-->
    <script src="PlayFab/PlayFabClientApi.js"></script>
    <!-- Libs and GDJS core files : -->
        <script src="libs\jshashtable.js"></script>
    <script src="gd.js"></script>
    <script src="gd-splash-image.js"></script>
    <script src="libs\hshg.js"></script>
    <script src="libs\rbush.js"></script>
    <script src="inputmanager.js"></script>
    <script src="timemanager.js"></script>
    <script src="runtimeobject.js"></script>
    <script src="profiler.js"></script>
    <script src="runtimescene.js"></script>
    <script src="scenestack.js"></script>
    <script src="polygon.js"></script>
    <script src="force.js"></script>
    <script src="layer.js"></script>
    <script src="timer.js"></script>
    <script src="runtimegame.js"></script>
    <script src="variable.js"></script>
    <script src="variablescontainer.js"></script>
    <script src="oncetriggers.js"></script>
    <script src="runtimebehavior.js"></script>
    <script src="spriteruntimeobject.js"></script>
    <script src="events-tools\commontools.js"></script>
    <script src="events-tools\runtimescenetools.js"></script>
    <script src="events-tools\inputtools.js"></script>
    <script src="events-tools\objecttools.js"></script>
    <script src="events-tools\cameratools.js"></script>
    <script src="events-tools\soundtools.js"></script>
    <script src="events-tools\storagetools.js"></script>
    <script src="events-tools\stringtools.js"></script>
    <script src="events-tools\windowtools.js"></script>
    <script src="events-tools\networktools.js"></script>
    <script src="pixi-renderers\pixi.js"></script>
    <script src="pixi-renderers\pixi-filters-tools.js"></script>
    <script src="pixi-renderers\runtimegame-pixi-renderer.js"></script>
    <script src="pixi-renderers\runtimescene-pixi-renderer.js"></script>
    <script src="pixi-renderers\layer-pixi-renderer.js"></script>
    <script src="pixi-renderers\pixi-image-manager.js"></script>
    <script src="pixi-renderers\spriteruntimeobject-pixi-renderer.js"></script>
    <script src="pixi-renderers\loadingscreen-pixi-renderer.js"></script>
    <script src="howler-sound-manager\howler.min.js"></script>
    <script src="howler-sound-manager\howler-sound-manager.js"></script>
    <script src="fontfaceobserver-font-manager\fontfaceobserver.js"></script>
    <script src="fontfaceobserver-font-manager\fontfaceobserver-font-manager.js"></script>
    <script src="Extensions\FacebookInstantGames\facebookinstantgamestools.js"></script>
    <script src="Extensions\TextObject\textruntimeobject-pixi-renderer.js"></script>
    <script src="Extensions\TextObject\textruntimeobject.js"></script>
    <script src="code0.js"></script>
    <script src="Extensions\DestroyOutsideBehavior\destroyoutsideruntimebehavior.js"></script>
    <script src="Extensions\SystemInfo\systeminfotools.js"></script>
    <script src="code1.js"></script>
    <script src="data.js"></script>


</head>
<body>
    <div id="canvasArea"></div>

    
    <script>

    //(function() 
    //{
        //Initialization
        gdjs.registerObjects();
        gdjs.registerBehaviors();
        gdjs.registerGlobalCallbacks();

        var game = new gdjs.RuntimeGame(gdjs.projectData, {});

        //Create a renderer
        var canvasArea = document.getElementById("canvasArea");
        game.getRenderer().createStandardCanvas(canvasArea);

        //Bind keyboards/mouse/touch events
        game.getRenderer().bindStandardEvents(game.getInputManager(), window, document);
         
        PlayFab.settings.titleId = "MyGameName";    
        
        FBInstant.initializeAsync()
        .then(function() {        
            //Load all assets and start the game
            game.loadAllAssets(function() 
            {
                FBInstant.startGameAsync()
                .then(function() 
                {
                    var playerId = FBInstant.player.getID();

                    // get the Player Signature for the current player

                    FBInstant.player.getSignedPlayerInfoAsync(playerId).then(function (result) 
                    {
                                var playerSignature = result.getSignature();
                                
                                PlayFabClientSDK.LoginWithFacebookInstantGamesId({
                                    FacebookInstantGamesSignature: playerSignature,
                                    CreateAccount: true
                                }, onPlayFabLoginResponse);   
                    });
                    game.startGameLoop();
                });
            }, function(percent) 
            {
                FBInstant.setLoadingProgress(percent);
            });
        }); 
        
       
        function onPlayFabLoginResponse(result) 
        {
        
            var playerName = FBInstant.player.getName();
                      
            PlayFabClientSDK.UpdateUserTitleDisplayName({
                DisplayName: playerName
            }, onPlayFabResponse);

            var playerAvatar = FBInstant.player.getPhoto();
            
            PlayFabClientSDK.UpdateAvatarUrl({
                ImageUrl: playerAvatar
            }, onPlayFabResponse);
            
        }

        // Handles response from playfab.
        function onPlayFabResponse(response, error) 
        {            
            if (response) 
            {               
                //logLine("Response: " + JSON.stringify(response));                
            }
            if (error)
            {
                //logLine("Error: " + JSON.stringify(error));
            }
        }
    

    </script>
</body>
</html>


sdks
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

1 Answer

·
Sarah Zhang avatar image
Sarah Zhang answered

You can check the API Authentication - Login With Facebook Instant Games Id. The field TitleId is required in the request body. You can try to add it. You seem to comment onyour logLine() code in your example. If you log response and error messages, it can help you troubleshoot. In addition, we have a tutorial video about PlayFab and Facebook Instant Games, you can check it if you want.

2 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Ryan Janse van Rensburg avatar image Ryan Janse van Rensburg commented ·

Thank you for responding. Yes it seems like TitleId is my problem but i have set that in the code above or am i missing something obvious here?

0 Likes 0 ·
capture.jpg (17.4 KiB)
captureb.jpg (30.3 KiB)
Ryan Janse van Rensburg avatar image Ryan Janse van Rensburg commented ·

Figured it out! The code works fine I was using my Prefab title name instead of the titleId found in the settings api! My bad.

Thanks

0 Likes 0 ·

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.