标签: facebook-instant-games

检测到损坏的 URL

我的 Facebook 即时应用程序获得批准,当我将其切换到实时模式时,它显示以下错误。谁能帮我?https://i.stack.imgur.com/4fCd9.png

facebook-instant-games

6
推荐指数
1
解决办法
763
查看次数

FBInstant.updateAsync()成功解析但什么都不做

我正在尝试在聊天环境中调用FBInstant.updateAsync()(id = THREAD).它已成功解析,但不会在聊天时发布任何消息.有人知道为什么会这样吗?

问题已修复,工作代码:

FBInstant.updateAsync({
    action: 'CUSTOM',
    //cta: 'Join The Fight',
    image: 'data:image/jpeg;base64,/...',
    text: 'X just invaded Y\'s village!',
    template: 'test_template',
    data: { myReplayData: '...' },
    strategy: 'IMMEDIATE',
    notification: 'NO_PUSH',
}).then(
    () =>{
        console.log('updateAsync() success!' + JSON.stringify(data));
        FBInstant.quit();
    },
    error => {
        console.error('updateAsync() ERROR! ' + JSON.stringify(error));
    }
);
Run Code Online (Sandbox Code Playgroud)

这是我的fbapp-config.json:

{
  "instant_games": {
    "platform_version": "RICH_GAMEPLAY",

    "custom_update_templates": {
      "test_template": {
        "example": "X just invaded Y's village!"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

facebook-instant-games

4
推荐指数
1
解决办法
1801
查看次数

Facebook即时玩家签名验证失败

我目前正在Facebook上开发即时游戏,需要验证玩家信息是否来自Facebook。Facebook通过哈希签名提供验证,如下所示:

https://developers.facebook.com/docs/games/instant-games/sdk/fbinstant6.2#signedplayerinfo

我遵循了概述的步骤,但是无法获得匹配的签名:

这是签名:

$_POST['psig'] = 'je3yV8uKmysDrjXv1xp_RY2rTMJLEREM7xj8SGt5HEk.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTU1MjI1NTc2OCwicGxheWVyX2lkIjoiMjA1OTE4OTA2MDgyMzk4MyIsInJlcXVlc3RfcGF5bG9hZCI6InBkYXRhIn0';
Run Code Online (Sandbox Code Playgroud)

1)将签名分成两部分,以“。”分隔。字符。

$first_part = explode('.', $_POST['psig'])[0];
echo $first_part;

// Output:
je3yV8uKmysDrjXv1xp_RY2rTMJLEREM7xj8SGt5HEk

$second_part = explode('.', $_POST['psig'])[1];
echo $second_part;

// Output
eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTU1MjI1NTc2OCwicGxheWVyX2lkIjoiMjA1OTE4OTA2MDgyMzk4MyIsInJlcXVlc3RfcGF5bG9hZCI6InBkYXRhIn0
Run Code Online (Sandbox Code Playgroud)

2)使用base64url编码对第一部分(编码签名)进行解码。

echo base64_decode($first_part);

// Output:
???W??+?5??Qcj?0??DC;???G
Run Code Online (Sandbox Code Playgroud)

3)使用base64url编码对第二部分(响应有效负载)进行解码,该部分应该是具有以下字段的JSON对象的字符串表示形式:**算法-始终等于HMAC-SHA256 ** issue_at-何时的unix时间戳此响应已发布。** player_id-玩家的唯一标识符。** request_payload-调用FBInstant.player.getSignedPlayerInfoAsync时指定的requestPayload字符串。

$payload = base64_decode($second_part);
echo $payload;

// Output:
{"algorithm":"HMAC-SHA256","issued_at":1552255768,"player_id":"2059189060823983","request_payload":"pdata"}
Run Code Online (Sandbox Code Playgroud)

4)使用HMAC SHA-256和您的应用程序密码来散列整个响应有效负载字符串,并确认它等于编码后的签名。

$check = hash_hmac('sha256', $payload, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', true);
echo $check;

// Output:
n4Q?K?`<???????tT?~x????L?
Run Code Online (Sandbox Code Playgroud)

我已经花了几个小时,无法弄清楚我在做什么错!

php encryption facebook facebook-instant-games

2
推荐指数
1
解决办法
197
查看次数

FBInstant.shareAsync() 函数在 facebook 即时游戏分享按钮中无法正常工作且没有任何错误

我创建了一个 Facebook 即时游戏,最后有一个分享按钮,如何让该分享按钮分享结果或链接中的照片,以便在玩家的个人资料上玩游戏。这是我的 shareAsync() 函数代码,它不会产生 javaScript 错误,但仍然不起作用。

$(document).on("click", ".share-result", function(){
   FBInstant.shareAsync({
       intent: 'INVITE',
       image: img,
       text: 'Play this Awesome game',
       data: {myReplayData: '...'},
   }).then(function() {
       location.reload();
      });
});
Run Code Online (Sandbox Code Playgroud)

javascript jquery facebook facebook-javascript-sdk facebook-instant-games

0
推荐指数
1
解决办法
2449
查看次数