Почему метод FBInstant.chooseAsync не отправляет запрос игрового процесса другу?

Я пытаюсь отправить запрос игрового процесса на мой бранд-фейсбук, используя метод FBinstant.chooseAsync. Но мой друг не отправляет запрос, и я не получаю никаких данных при обратном вызове после вызова этого метода.

Вот мой код игры -

 FBInstant.initializeAsync() .then(function() { 


    console.log("FBInstant.initializeAsync complete"); 


    console.log("FBInstant.startGameAsync complete"); 
    FBInstant.startGameAsync().then(function() { 

        console.log("FBInstant.startGameAsync complete"); 
        console.log("FBInstant.startGameAsync context : " + FBInstant.context.getID()); 

        FBInstant.context.chooseAsync() .then(function (e) { 

            console.log("FBInstant.context.chooseAsync complete"); 
            console.log(e); 
        }); 
    }); 

});

2 ответа

Вначале, FBInstant.context.chooseAsync() открывает диалог выбора контекста (см. API Reference v6.2). Во-вторых, почему вы используете FBInstant.startGameAsync() дважды? Попробуйте этот код:

FBInstant.initializeAsync() .then(function() {

    // Start loading game assets here 
    console.log("FBInstant.initializeAsync complete"); 

    // Finished loading. Start the game 
    FBInstant.startGameAsync().then(function() { 

        console.log("FBInstant.startGameAsync complete"); 
        console.log("FBInstant.startGameAsync context : " + FBInstant.context.getID()); 

        FBInstant.context.chooseAsync() .then(function () { 
            console.log("FBInstant.context.chooseAsync complete");
        }); 

    }); 
});

Похоже, вам нужно вызвать updateAsync в функции разрешения ChooseAsync, вы можете попробовать что-то вроде текущего:

FBInstant.context.chooseAsync() .then(function () { 
    window.FBInstant.updateAsync(
    {
      action: "CUSTOM",
      cta: "Join The Fight",
      template: "join_fight",
      image: base64Picture, //this should be source data of your share picture in 
                            //base64! you can parse your picture to base64 use  
                            //'https://www.base64-image.de'
      text: "X just invaded Y's village!",
      data: {
        myReplayData: "..."
      },
      strategy: "IMMEDIATE",
      notification: "NO_PUSH"
    }).then(function() {
      window.FBInstant.quit();
    }).catch(function(err){
        console.error(err);
    });

});

Вы должны добавить метод для вызова FBInstant.updateAsync() для обновления контекста. Он отправит сообщение другу, выбранному в контексте.

Вы можете использовать updateAsync только один раз за сеанс в контексте (то есть: вы не можете продолжать вызывать метод updateAsync повторно, он будет работать только в первый раз, а не в более поздних запросах), пока ваш друг не ответит в контексте.

Однако, если вы измените контекст или снова откроете контекст, вы можете снова опубликовать одно обновление, независимо от того, ответил ли на него ваш друг (например: использование напоминаний другу, чтобы напомнить ему ответить).

Ваш метод может выглядеть так:

updateContext(){
var updateData = {
        action: 'CUSTOM',
        intent: 'REQUEST',
        cta: actionButton,
        template: "join_fight",
        image: "base64 image data",
        //data would be like: "data:image/png;base64,lkhkfhjvajsdbka....",
        text: 'Message to be posted',
        data: { myReplayData: 'any data to be attatched' },
        strategy: 'IMMEDIATE',
        notification: 'NO_PUSH'
    };
    FBInstant.updateAsync(updateData);

}

Другие вопросы по тегам