网站建设工程师面试对自己的前景规划,东莞推广软件,精品课程网站建设 碧辉腾乐,怎么制造网站Facebook 游戏开发更新文档 API 参考文档 v6.0 更新日志 1.排行榜 此版本全新推出排行榜 API#xff01;提供一套强大的 API#xff0c; 使得游戏可获取排行榜、查询得分 情况和设置新分数#xff08;支持分数所带的 任意元数据#xff09;#xff0c;并可向 Messenger 对…Facebook 游戏开发更新文档 API 参考文档 v6.0 更新日志 1.排行榜 此版本全新推出排行榜 API提供一套强大的 API 使得游戏可获取排行榜、查询得分 情况和设置新分数支持分数所带的 任意元数据并可向 Messenger 对话推送结构化的排行榜 更新消息。 2.[公测版] 游戏内切换 我们还针对游戏内交叉推广引入了一个新 API。它目前 处于封测阶段如果您有兴趣在自己的游戏中帮忙 测试游戏内切换 API 的集成效果请联系 您的合作伙伴经理 FBInstant 小游戏 SDK 的顶级命名空间。 player 包含与当前玩家相关的功能和属性。 getID( ) 玩家的唯一标识。Facebook 用户的玩家编号 将保持不变且仅限于特定游戏范围。这意味着 同一个用户在不同的游戏中有不同的玩家编号。 仅当 FBInstant.initializeAsync() 被解析后才应调用此 函数。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.var playerID FBInstant.player.getID(); 返回字符串 玩家的唯一标识。 getSignedPlayerInfoAsync( ) 获取玩家的唯一标识和签名签名用于验证标识确实 来自 Facebook且没有被篡改。 仅当 FBInstant.initializeAsync() 被解析后才应调用此 函数。 参数 requestPayload字符串 开发者指定的包含于 已签名响应中的负载。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.FBInstant.player.getSignedPlayerInfoAsync(my_metadata) .then(function (result) { // The verification of the ID and signature should happen on server side. SendToMyServer( result.getPlayerID(), // same value as FBInstant.player.getID() result.getSignature(), GAIN_COINS, 100); }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 以 #signedplayerinfo 对象解析的 promise。 getName( ) 经本地化显示的玩家姓名。仅当 FBInstant.startGameAsync() 被解析后 才应调用此函数。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var playerName FBInstant.player.getName(); 返回字符串 经本地化显示的玩家姓名。 getPhoto( ) 玩家公开头像的网址。此照片始终为正方形 尺寸至少为 200x200 像素。在游戏中显示时 确切的尺寸可能会有所变化。建议 始终在显示之前将图片调整为需要的尺寸。 对应的值将始终为 null直至 FBInstant.startGameAsync() 被解析。 警告由于使用 CORS 机制在游戏 Canvas 中使用这些照片会导致照片 损坏这有碍于提取 Canvas 数据。 为防止出现这种情况应将您使用的图片的 cross-origin 属性设置为 “anonymous”。 示例 var playerImage new Image(); playerImage.crossOrigin anonymous;// This function should be called after FBInstant.startGameAsync()// resolves. playerImage.src FBInstant.player.getPhoto(); 返回字符串 玩家公开头像的网址。 getDataAsync( ) 从指定的云存储中检索当前玩家的数据。 参数 keys数组字符串 唯一键数组数据检索将针对这些键展开。 示例 FBInstant.player .getDataAsync([achievements, currentLife]) .then(function(data) { console.log(data is loaded); var achievements data[achievements]; var currentLife data[currentLife]; }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise对象 此 promise 将在获得 包含下列信息的对象时被解析输入数组中指定的每个键的 当前键值对如存在。 setDataAsync( ) 设置要保存到指定云存储的当前玩家 的数据。对于每个独立玩家游戏最多可存储 1MB 的数据。 参数 data对象 此对象包含 应该保存到云存储的一组键值对。对象必须仅包含 可序列化的值 — 任何不可序列化的值都会导致 整个修改被拒绝。 示例 FBInstant.player .setDataAsync({ achievements: [medal1, medal2, medal3], currentLife: 300, }) .then(function() { console.log(data is set); }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在输入值设定时被解析。 注意promise 被解析并不一定意味着输入 已被存储而是这意味着相关数据有效 并已安排要被存储。这还能保证设置的所有值 现在可在 player.getDataAsync 中使用。 flushDataAsync( ) 立即将玩家数据的任何更改刷新到指定的 云存储中。此函数的调用成本较高 应主要用于需要立即存储并告知游戏的 重要更改。非重要更改应依赖于开放平台在后台 进行存储。 注意当此函数的结果待定时 player.setDataAsync 调用将被拒绝。 示例 FBInstant.player .setDataAsync({ achievements: [medal1, medal2, medal3], currentLife: 300, }) .then(FBInstant.player.flushDataAsync) .then(function() { console.log(Data persisted to FB!); }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在更改保存成功时被解析 在更改保存失败时被拒绝。 getStatsAsync( ) 从指定云存储检索当前玩家的统计数据。 参数 keys数组字符串 唯一键数组可选针对这些键检索 统计数据。如果调用函数时没有设置此参数则会提取所有统计数据。 示例 FBInstant.player .getStatsAsync([level, zombiesSlain]) .then(function(stats)) { console.log(stats are loaded); var level data[level]; var zombiesSlain data[zombiesSlain]; }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise对象 此 promise 将在获得 包含下列信息的对象时被解析输入数组中指定的每个键的 当前键值对如存在。 setStatsAsync( ) 设置要保存到指定云存储的当前玩家 的统计数据。 参数 stats对象 此对象包含应作为统计数据 保存到云存储的键值对能以各种方式显示或 使用这些数据以提高玩家参与度。对象必须 仅包含数值任何非数值会导致整个 修改被拒绝。 示例 FBInstant.player .setStatsAsync({ level: 5, zombiesSlain: 27, }) .then(function() { console.log(data is set); }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在输入值设定时被解析。 注意promise 被解析并不一定意味着输入 已被存储而是这意味着相关数据经过验证 并已安排要被存储。这还能保证设置的所有值 现在可在 player.getStatsAsync 中使用。 incrementStatsAsync( ) 保存到指定云存储的当前玩家 的增量统计数据。 参数 increments对象 此对象包含一组键值对 这些键值对表示云存储中每个统计数据的增量是多少。对象必须 仅包含数值任何非数值会导致整个 修改被拒绝。 示例 FBInstant.player .incrementStatsAsync({ level: 1, zombiesSlain: 17, rank: -1, }) .then(function(stats)) { console.log(increments have been made! New values); var level data[level]; var zombiesSlain data[zombiesSlain]; }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise对象 此 promise 将在获得包含下列信息的对象时被解析输入字典中指定的每个键 的更新键值对。 注意解析 promise 并不一定意味着更改 已被存储而是意味着 增量有效且已安排要被执行 。这还能保证增加的所有值 现在可在 player.getStatsAsync 中使用。 getConnectedPlayersAsync( ) 提取 ConnectedPlayer 对象的数组这些对象包含与当前玩家 关联的玩家的信息。 示例 var connectedPlayers FBInstant.player.getConnectedPlayersAsync() .then(function(players) { console.log(players.map(function(player) { return { id: player.getID(), name: player.getName(), } })); });// [{id: 123456789, name: Paul Atreides}, {id: 987654321, name: Duncan Idaho}] 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise数组 此 promise 将在 获得关联玩家对象列表时被解析。 注意只有当 FBInstant.startGameAsync() 被解析时此 promise 才会解析。 context 包含与当前游戏环境相关的功能和属性。 getID( ) 当前游戏环境的唯一标识。这表示 玩游戏的特定环境例如特定的 Messenger 对话或 Facebook 帖子。如果用户在独立环境中玩游戏则此标识将 为 null。仅当 FBInstant.startGameAsync 被解析后 才应调用此函数。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var contextID FBInstant.context.getID(); 返回字符串 当前游戏环境的唯一标识。 getType( ) 当前游戏环境的类型。 POST — 一个 Facebook 帖子。 THREAD — 一个 Messenger 对话。 GROUP — 一个 Facebook 小组。 SOLO — 默认环境玩家是唯一的参与者。 仅当 FBInstant.startGameAsync 被解析后才应调用此函数。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var contextType FBInstant.context.getType(); 返回(POST | THREAD | GROUP | SOLO) 当前游戏环境的类型。 isSizeBetween( ) 此函数用于确定加入当前游戏环境的玩家 数量是否在给定的最小值和最大值之间包括最小值和最大值。仅当其中一个边界值为 null 时 才会根据另一个边界值进行检查。在特定 的游戏会话中此函数始终会返回某 环境内发出的第一个调用的最初结果。后续调用无论参数是什么将返回 原始查询的答案除非游戏环境发生变化且 查询结果被重置。 仅当 FBInstant.startGameAsync 被解析后才应调用此函数。 如果提供的一个或两个参数无效我们没有适合当前游戏环境 的玩家数量或者 API 在 startGameAsync() 解析之前被调用 此参数都会为 null。 参数 minSize数字 环境规模查询的最小边界值。 minSize数字 环境规模查询的最大边界值。 maxSize数字 示例 console.log(FBInstant.context.isSizeBetween(3, 5)); (Context size 4)// {answer: true, minSize: 3, maxSize: 5} console.log(FBInstant.context.isSizeBetween(5, 7)); (Context size 4)// {answer: false, minSize: 5, maxSize: 7} console.log(FBInstant.context.isSizeBetween(2, 10)); (Context size 3)// {answer: true, minSize: 2, maxSize: 10} console.log(FBInstant.context.isSizeBetween(4, 8)); (Still in same context)// {answer: true, minSize: 2, maxSize: 10} console.log(FBInstant.context.isSizeBetween(3, null)); (Context size 4)// {answer: true, minSize: 3, maxSize: null} console.log(FBInstant.context.isSizeBetween(null, 3)); (Context size 4)// {answer: false, minSize: null, maxSize: 3} console.log(FBInstant.context.isSizeBetween(test, 5)); (Context size 4)// null console.log(FBInstant.context.isSizeBetween(0, 100)); (Context size null)// null 返回 ContextSizeResponse switchAsync( ) 请求切换到指定环境。如果玩家没有进入该环境的权限 或玩家未向游戏提供进入 该环境的权限请求将被拒绝。 promise 将在 游戏切换到指定环境时被解析。 参数 id字符串 目标环境的编号。 示例 console.log(FBInstant.context.getID());// 1122334455FBInstant.context .switchAsync(1234567890) .then(function() { console.log(FBInstant.context.getID()); // 1234567890 }); 抛出 INVALID_PARAM 抛出 SAME_CONTEXT 抛出 NETWORK_FAILURE 抛出 USER_INPUT 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在游戏切换到指定环境时被解析 在切换失败时被拒绝。 chooseAsync( ) 为玩家打开一个环境选择对话框。如果玩家选择可用的环境 客户端将尝试切换到这个环境 并在成功时解析。而如果玩家退出菜单或 客户端未能切换到新环境此函数 将被拒绝。 参数 options对象 此对象用于指定应提供 的环境选项。 options.filters数组 适用于环境推荐的一组筛选条件 。 options.maxSize数字 在理想情况下推荐环境应有 的最大玩家数量。 options.minSize数字 在理想情况下推荐环境应有 的最小玩家数量。 示例 console.log(FBInstant.context.getID());// 1122334455FBInstant.context .chooseAsync() .then(function() { console.log(FBInstant.context.getID()); // 1234567890 }); console.log(FBInstant.context.getID());// 1122334455FBInstant.context .chooseAsync({ filters: [NEW_CONTEXT_ONLY], minSize: 3, }) .then(function() { console.log(FBInstant.context.getID()); // 1234567890 }); 抛出 INVALID_PARAM 抛出 SAME_CONTEXT 抛出 NETWORK_FAILURE 抛出 USER_INPUT 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在游戏切换到用户选择的环境时 被解析。否则此 promise 将被拒绝 例如用户退出对话框。 createAsync( ) 尝试在指定玩家和当前玩家之间创建环境或 切换环境。如果列出的玩家不是当前玩家的关联玩家 或玩家未提供进入新环境的权限 则返回的 promise 将被拒绝。 当游戏切换到新环境时 promise 将被解析。 参数 playerID字符串 玩家的编号 示例 console.log(FBInstant.context.getID());// 1122334455FBInstant.context .createAsync(12345678) .then(function() { console.log(FBInstant.context.getID()); // 5544332211 }); 抛出 INVALID_PARAM 抛出 SAME_CONTEXT 抛出 NETWORK_FAILURE 抛出 USER_INPUT 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在游戏切换到新环境时被解析 在切换失败时被拒绝。 getPlayersAsync( ) 获取 #contextplayer 对象的数组 其中包含与当前环境相关的活跃玩家 在过去 90 天内玩过游戏的用户的信息。这可能包含当前 玩家。 示例 var contextPlayers FBInstant.context.getPlayersAsync() .then(function(players) { console.log(players.map(function(player) { return { id: player.getID(), name: player.getName(), } })); });// [{id: 123456789, name: Luke}, {id: 987654321, name: Leia}] 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 INVALID_OPERATION 返回 Promise数组 支付 [封闭公测] 包含与游戏商品的支付和购买相关的 函数和属性。 getCatalogAsync( ) 获取游戏的商品目录。 示例 FBInstant.payments.getCatalogAsync().then(function (catalog) { console.log(catalog); // [{productID: 12345, ...}, ...]}); 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 PAYMENTS_NOT_INITIALIZED 抛出 NETWORK_FAILURE 返回 Promise数组商品 登记到游戏的 一组商品。 purchaseAsync( ) 开始特定商品的购买流程。 参数 purchaseConfigPurchaseConfig 该项购买的配置详情。 示例 FBInstant.payments.purchaseAsync({ productID: 12345, developerPayload: foobar,}).then(function (purchase) { console.log(purchase); // {productID: 12345, purchaseToken: 54321, developerPayload: foobar, ...}}); 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 PAYMENTS_NOT_INITIALIZED 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 返回 Promise购买 此 promise 将在玩家成功购买 商品时被解析否则会被拒绝。 getPurchasesAsync( ) 获取玩家未消费的所有购买商品。最佳做法是 游戏在客户端表明已准备好执行支付相关操作时 立即获取当前玩家的购买商品。游戏 随后可处理和消费正在等待被消费的任何购买商品。 示例 FBInstant.payments.getPurchasesAsync().then(function (purchases) { console.log(purchase); // [{productID: 12345, ...}, ...]}); 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 PAYMENTS_NOT_INITIALIZED 抛出 NETWORK_FAILURE 返回 Promise数组购买 玩家为游戏购买的 一组商品。 consumePurchaseAsync( ) 消费当前玩家拥有的特定购买商品。在为玩家 配置商品效果之前游戏应先请求 消费已购买的商品。购买的商品成功 消费后游戏应立即向玩家呈现 购买商品的效果。 参数 purchaseToken字符串 应消费的购买商品的 购买口令。 示例 FBInstant.payments.consumePurchaseAsync(54321).then(function () { // Purchase successfully consumed! // Game should now provision the product to the player}); 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 PAYMENTS_NOT_INITIALIZED 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 返回 Promise 此 promise 在成功消费已购买的 商品时被解析。 onReady( ) 设置一个回调在支付操作可进行时触发。 参数 callback函数 当支付可进行时执行的 回调函数。 示例 FBInstant.payments.onReady(function () { console.log(Payments Ready!)}); 返回 void getLocale( ) 当前的语言设置。根据这一结果确定当前的游戏应本地化 为哪种语言。在 FBInstant.startGameAsync() 被解析之前对应的值将不准确。 示例 // This function should be called after FBInstant.startGameAsync()// resolves.var locale FBInstant.getLocale(); // en_US 返回字符串 当前的语言设置。 getPlatform( ) 当前运行游戏的平台。对应的值将始终为 null 直至 FBInstant.initializeAsync() 被解析。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.var platform FBInstant.getPlatform(); // IOS 返回平台 getSDKVersion( ) 表示此 SDK 版本的字符串。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.var sdkVersion FBInstant.getSDKVersion(); // 2.0 返回字符串 SDK 版本。 initializeAsync( ) 初始化 SDK 库。应在调用其他任何 SDK 函数 之前调用此函数。 示例 FBInstant.initializeAsync().then(function() { // Many properties will be null until the initialization completes. // This is a good place to fetch them: var locale FBInstant.getLocale(); // en_US var platform FBInstant.getPlatform(); // IOS var sdkVersion FBInstant.getSDKVersion(); // 3.0 var playerID FBInstant.player.getID();}); 抛出 INVALID_OPERATION 返回 Promise 此 promise 将在 SDK 可以使用时被解析。 setLoadingProgress( ) 报告游戏的初始加载进度。 参数 percentage数字 介于 0 和 100 之间的数字。 示例 FBInstant.setLoadingProgress(50); // Assets are 50% loaded 返回 void getSupportedAPIs( ) 提供客户端支持的 API 函数的列表。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.FBInstant.getSupportedAPIs();// [getLocale, initializeAsync, player.getID, context.getType, ...] 返回数组字符串 客户端显式支持的 API 函数 列表。 getEntryPointData( ) 返回与启动游戏的入口点相关的任何数据 对象。 对象内容由开发者定义可通过不同平台 的入口点触发。对于较旧版本的移动客户端 以及没有与特定入口点相关的数据时 此函数会返回 null。 示例 // This function should be called after FBInstant.initializeAsync()// resolves.const entryPointData FBInstant.getEntryPointData(); 返回对象 与当前入口点相关的数据。 getEntryPointAsync( ) 返回启动游戏的入口点 示例 // This function should be called after FBInstant.startGameAsync()// resolves.FBInstant.getEntryPointAsync().then(entrypoint console.log(entrypoint));// admin_message 返回字符串 用户启动游戏时所在的入口点的 名称 仅当 FBInstant.startGameAsync() 被解析后 才应调用此函数。 setSessionData( ) 为当前环境设置与单个游戏会话相关的 数据。 当游戏需要更新当前的会话数据时 应调用此函数。此会话数据可用于填充各种负载 如玩游戏 Webhook。 参数 sessionData对象 一个随机数据对象转变为字符串后必须小于 或等于 1000 个字符。 示例 FBInstant.setSessionData({coinsEarned: 10, eventsSeen: [start, ...]}); 返回 void startGameAsync( ) 表示游戏已完成初始加载 并准备就绪可以开始游戏。当返回的 promise 被解析时 环境信息即为最新。 示例 FBInstant.startGameAsync().then(function() { myGame.start();}); 抛出 INVALID_PARAM 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在游戏应该启动时被解析。 shareAsync( ) 此函数会调用一个对话框让用户以下列方式分享指定的内容在 Messenger 中发送消息或在用户时间线上发布帖子。可以在分享中添加数据块 通过此次分享启动的每个游戏会话 都可以通过 FBInstant.getEntryPointData() 访问此数据块。转变为字符串时 此数据必须小于或等于 1000 个字符。用户 可以选择取消分享操作和关闭对话框 但无论用户实际是否分享了内容 返回的 promise 都将在对话框关闭时解析。 参数 payloadSharePayload指定要分享的内容。详情 请参阅示例。 示例 FBInstant.shareAsync({ intent: REQUEST, image: base64Picture, text: X is asking for your help!, data: { myReplayData: ... },}).then(function() { // continue with the game.}); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 INVALID_OPERATION 返回 Promise 此 promise 将在分享完成或取消时 被解析。 updateAsync( ) 向 Facebook 通知游戏内发生的更新。这会 暂时将控制权移交给 Facebook且 Facebook 将确定要 根据更新内容采取什么操作。返回的 promise 将在 Facebook 把 控制权返还给游戏时解析/拒绝。 参数 payloadUpdatePayload 描述更新的负载。 示例 // This will post a custom update. If the game is played in a messenger// chat thread, this will post a message into the thread with the specified// image and text message. And when people launch the game from this// message, those game sessions will be able to access the specified blob// of data through FBInstant.getEntryPointData().FBInstant.updateAsync({ action: CUSTOM, cta: Join The Fight, image: base64Picture, text: { default: X just invaded Ys village!, localizations: { ar_AR: X \u0641\u0642\u0637 \u063A\u0632\u062A \u0642\u0631\u064A\u0629 Y!, en_US: X just invaded Ys village!, es_LA: \u00A1X acaba de invadir el pueblo de Y!, } } template: VILLAGE_INVASION, data: { myReplayData: ... }, strategy: IMMEDIATE, notification: NO_PUSH,}).then(function() { // closes the game after the update is posted. FBInstant.quit();}); 抛出 INVALID_PARAM 抛出 PENDING_REQUEST 抛出 INVALID_OPERATION 返回 Promise 此 promise 将在 Facebook 把控制权交还给游戏时 被解析。 switchGameAsync( ) 请求客户端切换到另一个小游戏。切换 失败时API 将拒绝否则客户端将加载 新游戏。 参数 appID字符串 要切换到的小游戏相应的应用编号。 应用必须为小游戏且必须和当前游戏 属于同一商家所有。要将不同游戏关联到相同商家 您可使用商务管理平台https://developers.facebook.com/docs/apps/business-manager#update-business。 data字符串 可选的数据负载。这将设为 要切换到的游戏的入口点数据。转变为字符串时 必须小于或等于 1000 个字符。 示例 FBInstant.switchGameAsync(12345678).catch(function (e) { // Handle game change failure}); 抛出 USER_INPUT 抛出 INVALID_PARAM 抛出 PENDING_REQUEST 抛出 CLIENT_REQUIRES_UPDATE 返回 Promise quit( ) 退出游戏。 示例 FBInstant.quit(); 返回 void logEvent( ) 通过 Facebook 分析记录应用事件。请参阅 https://developers.facebook.com/docs/javascript/reference/v2.8#app_events 详细了解 Fcaebook 分析。 参数 eventName字符串 事件名称。必须为 2 到 40 个字符 且只能包含“”、“-”、“ ”和字母数字字符。 valueToSum数字 可选的数值Facebook 分析利用此参数来 计算总和。 parameters对象 可选的对象最多可包含 25 个要与事件一同记录的键值对。键必须为 2 到 40 个字符 且只能包含“”、“-”、“ ”和 字母数字字符。值的长度必须小于 100 个字符。 示例 var logged FBInstant.logEvent( my_custom_event, 42, {custom_property: custom_value},); 返回 APIError 如果事件记录错误将返回错误 否则返回 null。 onPause( ) 设置发生暂停事件时将触发的回调。 参数 func函数 发生暂停事件时将调用的函数。 示例 FBInstant.onPause(function() { console.log(Pause event was triggered!);}) 返回 void getInterstitialAdAsync( ) 尝试创建插屏广告的实例。此实例可在之后 预载和显示。 参数 placementID字符串 在 Audience Network 设置中设置的 版位编号。 示例 FBInstant.getInterstitialAdAsync( my_placement_id,).then(function(interstitial) { interstitial.getPlacementID(); // my_placement_id}); 抛出 ADS_TOO_MANY_INSTANCES 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在获得 #adinstance 时被解析在获得 #apierror 时被拒绝 如果未能创建。 getRewardedVideoAsync( ) 尝试创建奖励式视频广告的实例。此实例可在之后 预载和显示。 参数 placementID字符串 在 Audience Network 设置中设置的 版位编号。 示例 FBInstant.getRewardedVideoAsync( my_placement_id,).then(function(rewardedVideo) { rewardedVideo.getPlacementID(); // my_placement_id}); 抛出 ADS_TOO_MANY_INSTANCES 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 此 promise 将在获得 #adinstance 时被解析在获得 #apierror 时被拒绝 如果未能创建。 matchPlayerAsync( ) [封闭公测] 尝试将当前玩家与等待他人加入游戏的其他玩家 进行匹配。如果匹配成功将为匹配的玩家创建 一个新的 Messenger 群聊且玩家的游戏环境将切换到 该群聊。 参数 matchTag字符串 玩家的可选额外信息可用于将玩家 加到具有相似玩家的群聊中。具有完全相同标签的玩家 才会加入同一群聊。标签只能包含 字母、数字和下划线且长度不能超过 100 个 字符。 switchContextWhenMatchedboolean 可选的额外参数 指定当找到匹配时是否将玩家 立即切换到新环境。默认设置为 false亦即 玩家在匹配成功后需要明确点击玩游戏按钮 才会切换到新环境。 示例 FBInstant .matchPlayerAsync(level1) .then(function() { console.log(FBInstant.context.getID()); // 12345 }); FBInstant .matchPlayerAsync() .then(function() { console.log(FBInstant.context.getID()); // 3456 }); FBInstant .matchPlayerAsync(null, true) .then(function() { console.log(FBInstant.context.getID()); // 3456 }); 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 抛出 USER_INPUT 抛出 PENDING_REQUEST 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 INVALID_OPERATION 返回 Promise 当玩家已加入群聊并切换到 群聊环境时此 promise 被解析。 checkCanPlayerMatchAsync( ) [封闭公测] 检查当前玩家是否符合 matchPlayerAsync API 的条件。 示例 FBInstant .checkCanPlayerMatchAsync() .then(canMatch { if (canMatch) { FBInstant.matchPlayerAsync(level1); } }); 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 返回 Promise 当玩家符合与其他玩家匹配的条件时 此 promise 被解析为 true否则解析为 false。 getLeaderboardAsync( ) 获取这款小游戏中的特有排行榜。 参数 name字符串 排行榜的名称。小游戏的每个 排行榜必须具有唯一的名称。 示例 FBInstant.getLeaderboardAsync(my_awesome_leaderboard) .then(leaderboard { console.log(leaderboard.getName()); // my_awesome_leaderboard }); 抛出 LEADERBOARD_NOT_FOUND 抛出 NETWORK_FAILURE 抛出 CLIENT_UNSUPPORTED_OPERATION 抛出 INVALID_OPERATION 抛出 INVALID_PARAM 返回 Promise排行榜 此 promise 在获得匹配的排行榜时被解析 在未找到匹配时被拒绝。 LocalizationsDict 代表特定字符串的语言设置与翻译之间的映射。 每个属性均为可选且包含五个字符的 Facebook 语言代码格式为 xx_XX。 请参阅 https://origincache.facebook.com/developers/resources/?idFacebookLocales.xml 获取受支持的语言代码的完整列表。 类型对象 APIError 小游戏 SDK 返回的 API 错误 code 相关的错误代码 类型ErrorCodeType message 描述错误的消息 类型字符串 ConnectedPlayer 代表与当前玩家关联的玩家的信息。 getID( ) 获取关联玩家的编号。 返回字符串 关联玩家的编号 getName( ) 获取玩家的全名。 返回字符串 即玩家的全名 getPhoto( ) 获取玩家公开头像的网址。 返回字符串 玩家公开头像的网址 SignedPlayerInfo 代表玩家信息并包含签名 签名用于验证对应信息确实来源于 Facebook。 getPlayerID( ) 获取玩家的编号。 示例 FBInstant.player.getSignedPlayerInfoAsync() .then(function (result) { result.getPlayerID(); // same value as FBInstant.player.getID() }); 返回字符串 玩家的编号 getSignature( ) 用于验证此对象确实来源于 Facebook 的签名。此字符串 使用 base64url 编码 并根据 OAuth 2.0 协议使用 HMAC 版本的应用密钥签名。 您可以通过以下步骤进行验证 1.将签名分为两个部分以“.”字符隔开。 2. 对第一部分编码签名执行以下替换操作 3. o 将短横线 (-) 替换为加号 () o o 将下划线 () 替换为正斜杠 (/) o 4. 使用 base64url 编码对产生的字符串解码。 5. 6. 通过 base64url 编码对第二部分响应负载进行解码 第二部分应该是代表 JSON 对象包含下列字段的字符串 7. o algorithm — 始终等于 HMAC-SHA256 o o issued_at — 发出此响应的 unix 时间戳。 o o player_id — 玩家的唯一标识。 o o request_payload — 调用 FBInstant.player.getSignedPlayerInfoAsync 时 指定的 requestPayload 字符串。 o 8. 请采用 HMAC SHA-256 和您的应用密钥散列处理 整个响应负载字符串并确定它等同于经编码的签名。 9. 10.还建议您验证响应负载中 的 issued_at 时间戳确保请求是最近发出的。 应仅在您的服务器中进行签名验证。 不要在客户端进行签名验证 因为客户端可能会泄漏您的应用密钥。 示例 In your games client//FBInstant.player.getSignedPlayerInfoAsync(my_payload) .then(function (result) { MyServer.send(result.getSignature()); // Example result.getSignature() // Eii6e636mz5J47sfqAYEK40jYAwoFqi3x5bxHkPG4Q4.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTUwMDM5ODY3NSwicGxheWVyX2lkIjoiMTI0OTUyNTMwMTc1MjIwMSIsInJlcXVlc3RfcGF5bG9hZCI6Im15X2ZpcnN0X3JlcXVlc3QifQ }); In your server (node.js example)//const CryptoJS require(crypto-js);var firstpart signedRequest.split(.)[0]; firstpart firstpart.replace(/-/g, ).replace(//g, /);const signature CryptoJS.enc.Base64.parse(firstpart).toString();const dataHash CryptoJS.HmacSHA256(signedRequest.split(.)[1], APP_SECRET).toString();var isValid signature dataHash; const json crypto.enc.Base64.parse(signedRequest.split(.)[1]).toString(crypto.enc.Utf8);const encodedData JSON.parse(json); // Example encodedData:// {// algorithm: HMAC-SHA256,// issued_at: 1520009634,// player_id: 123456789,// request_payload: my_payload// } 返回字符串 签名字符串。 ContextPlayer 代表与当前玩家在相同环境中玩游戏 的玩家的信息。 getID( ) 获取相同环境玩家的编号。 返回字符串 相同环境玩家的编号 getName( ) 获取经本地化显示的玩家姓名。 返回字符串 经本地化显示的玩家姓名。 getPhoto( ) 获取玩家公开头像的网址。 返回字符串 玩家公开头像的网址 AdInstance 代表广告实例。 getPlacementID( ) 返回此广告实例的 Audience Network 版位编号。 loadAsync( ) 预加载广告。返回的 promise 将在预加载完成时被解析 在预加载失败时被拒绝。 示例 FBInstant.getInterstitialAdAsync( my_placement_id,).then(function(interstitial) { return interstitial.loadAsync();}).then(function() { // Ad loaded}); 抛出 ADS_FREQUENT_LOAD 抛出 ADS_NO_FILL 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 返回 Promise showAsync( ) 代表广告。返回的 promise 将在用户 观看完广告时被解析在广告展示失败或 用户在广告展示期间关闭广告时被拒绝。 示例 var ad null;FBInstant.getRewardedVideoAsync( my_placement_id,).then(function(rewardedVideo) { ad rewardedVideo; return ad.loadAsync();}).then(function() { // Ad loaded return ad.showAsync();}).then(function() { // Ad watched}); 抛出 ADS_NOT_LOADED 抛出 INVALID_PARAM 抛出 NETWORK_FAILURE 返回 Promise 排行榜 小游戏排行榜 getName( ) 排行榜的名称。 示例 FBInstant.getLeaderboardAsync(my_leaderboard) .then(function(leaderboard) { console.log(leaderboard.getName()); // my_leaderboard }); 返回字符串 getContextID( ) 与排行榜相关联环境的编号如果 排行榜未与特定环境关联则为 null。 示例 FBInstant.getLeaderboardAsync(contextual_leaderboard) .then(function(leaderboard) { console.log(leaderboard.getContextID()); // 12345678 }); FBInstant.getLeaderboardAsync(global_leaderboard) .then(function(leaderboard) { console.log(leaderboard.getContextID()); // null }); 返回字符串 getEntryCountAsync( ) 获取排行榜中玩家上榜分数的总数量。 示例 FBInstant.getLeaderboardAsync(my_leaderboard) .then(function(leaderboard) { return leaderboard.getEntryCountAsync(); }) .then(function(count) { console.log(count); }); // 24 抛出 NETWORK_FAILURE 返回 Promise数字 玩家的唯一标识。 setScoreAsync( ) 更新玩家的分数。如果玩家已有分数 只有新分数更好时才会替换旧分数。 注意如果排行榜与特定环境关联游戏必须处于 该环境才能为玩家设置分数。 参数 score数字 玩家的新分数。必须为 64 位 整数。 extraData字符串 ion。 与保存的分数关联的元数据。 大小必须小于 2KB。 示例 FBInstant.getLeaderboardAsync(my_leaderboard) .then(function(leaderboard) { return leaderboard.setScoreAsync(42, {race: elf, level: 3}); }) .then(function(entry) { console.log(entry.getScore()); // 42 console.log(entry.getExtraData()); // {race: elf, level: 3} }); 抛出 LEADERBOARD_WRONG_CONTEXT 抛出 NETWORK_FAILURE 抛出 INVALID_PARAM 抛出 INVALID_OPERATION 返回 Promise 解析为更新后玩家在排行榜的 当前上榜分数。 getPlayerEntryAsync( ) 检索当前玩家的排行榜上榜分数或在玩家尚无 上榜分数时返回 null。 示例 FBInstant.getLeaderboardAsync(my_leaderboard) .then(function(leaderboard) { return leaderboard.getPlayerEntryAsync(); }) .then(function(entry) { console.log(entry.getRank()); // 2 console.log(entry.getScore()); // 42 console.log(entry.getExtraData()); // {race: elf, level: 3} }); 抛出 NETWORK_FAILURE 抛出 INVALID_OPERATION 返回 Promise 解析为玩家在排行榜的 当前上榜分数。 getEntriesAsync( ) 检索一组排行榜上榜分数按排行榜上的得分名次 排序。 参数 count数字 尝试从排行榜获取的上榜分数 总数量。如果未指定默认为 10。每条查询命令最多可获取 100 个上榜分数。 offset数字 从排行榜顶部检索 上榜分数的偏移量。 示例 FBInstant.getLeaderboardAsync(my_leaderboard) .then(function(leaderboard) { return leaderboard.getEntriesAsync(); }) .then(function(entries) { console.log(entries.length); // 10 console.log(entries[0].getRank()); // 1 console.log(entries[0].getScore()); // 42 console.log(entries[1].getRank()); // 2 console.log(entries[1].getScore()); // 40 }); FBInstant.getLeaderboardAsync(my_leaderboard) .then(function(leaderboard) { return leaderboard.getEntriesAsync(5, 3); }) .then(function(entries) { console.log(entries.length); // 5 console.log(entries[0].getRank()); // 4 console.log(entries[0].getScore()); // 34 console.log(entries[1].getRank()); // 5 console.log(entries[1].getScore()); // 31 }); 抛出 NETWORK_FAILURE 返回 Promise数组 解析为与查询条件相符的 排行榜上榜分数。 商品 表示游戏的商品信息。 类型对象 属性 title字符串 商品的标题 productID字符串 商品在游戏中的特定标识 description字符串 商品说明 imageURI字符串 商品相关图片的链接 price字符串 商品的价格 priceCurrencyCode字符串 商品的货币代码 ContextFilter 适用于环境选择操作的筛选条件。 “NEW_CONTEXT_ONLY”— 仅显示之前玩游戏未使用过的环境。 “INCLUDE_EXISTING_CHALLENGES”— 包括“当前挑战”部分 显示玩家积极在其中玩游戏的环境。 “NEW_PLAYERS_ONLY”— 在包含个人信息的部分 筛选出之前未玩过游戏的用户 类型(NEW_CONTEXT_ONLY | INCLUDE_EXISTING_CHALLENGES | NEW_PLAYERS_ONLY) 购买 表示游戏商品的单笔购买。 类型对象 属性 developerPayload字符串 开发者指定的字符串 在商品购买期间提供 paymentID字符串 购买交易的标识 productID字符串 商品在游戏中的特定标识 purchaseTime字符串 购买发生时的 Unix 时间戳 purchaseToken字符串 代表该笔购买的一个口令 可用来消费购买的商品 signedRequestSignedPurchaseRequest 购买请求的服务器 签名代码 平台 代表用户当前在哪个平台玩游戏。 类型(IOS | ANDROID | WEB | MOBILE_WEB) ContextSizeResponse 如果当前环境的规模介于对象中 指定的 minSize 和 maxSize 值之间 answer 字段为 true否则为 false。 类型{answer: boolean, minSize: number?, maxSize: number?} SharePayload 代表用户分享的内容。 类型对象 属性 intent(INVITE | REQUEST | CHALLENGE | SHARE) 表示分享的意图。 image字符串 要分享的 base64 编码图片。 text字符串 要分享的文本消息。 data对象 要附加到分享中的数据块。通过分享 开始的所有游戏会话都可以通过 FBInstant.getEntryPointData() 访问此数据块。 错误代码 小游戏 API 可能会返回的错误代码 属性 ADS_FREQUENT_LOAD字符串 广告加载太频繁。 ADS_NO_FILL字符串 我们无法向当前的用户投放 广告。如果用户在设备中退订基于兴趣的广告 或我们没有广告可展示给该用户就会出现这种情况 ADS_NOT_LOADED字符串 尝试显示此前未成功 加载的广告。 ADS_TOO_MANY_INSTANCES字符串 同时展示的广告实例 太多。建议您先加载和展示现有广告实例再新建广告。 ANALYTICS_POST_EXCEPTION字符串 分析 API 在尝试发布事件 时遇到问题。 CLIENT_REQUIRES_UPDATE字符串 [已停用] — 客户端要求获得 更新以便访问返回此结果的功能。如果在网页端 返回这一结果则意味着该网页客户端还不支持 此功能。v5.0 及更高版本已停用这一代码以便支持 CLIENT_UNSUPPORTED_OPERATION CLIENT_UNSUPPORTED_OPERATION字符串 客户端不支持 当前操作。这可能是因为客户端版本或平台不提供 相关支持或不允许对游戏或玩家执行此 操作。 INVALID_OPERATION字符串 所请求的操作无效 或表示当前的游戏状态。这包括违反限制 如超出存储上限或不适用于特定状态 如在独立的环境中针对特定环境发出请求 的情况。 INVALID_PARAM字符串 传递给 API 的参数 无效。可表示错误类型、参数的无效数字或 语义问题例如将不可序列化的对象传递到 序列化函数。 LEADERBOARD_NOT_FOUND字符串 找不到所请求名称的 排行榜。这是因为排行榜尚不存在 或其名称与游戏中登记的任何排行榜配置都不匹配。 LEADERBOARD_WRONG_CONTEXT字符串 尝试写入的排行榜 关联了不同于当前玩游戏环境的 其他环境。 NETWORK_FAILURE字符串 客户端处理网络请求时 出现问题。这可能是由暂时性问题导致的 如玩家的网络连接中断。 PENDING_REQUEST字符串 表示因存在与此请求冲突的 一项请求而被拒绝。例如当某个依赖于 Facebook 用户界面的请求处于待处理状态时 我们就会拒绝显示 Facebook 用户界面的其他任何调用。 SAME_CONTEXT字符串 游戏尝试切换到 当前环境。 UNKNOWN字符串 发生了未知或未指定的问题。这是 客户端未指定代码时返回的默认错误代码。 USER_INPUT字符串 用户的选择导致 被拒绝。例如如果游戏调用环境切换对话框 而玩家关闭此对话框 则 promise 拒绝中就会包含此错误代码。 示例 FBInstant.startGameAsync().catch(function(e) { console.log(e);});// {code: CLIENT_UNSUPPORTED_OPERATION, message: ...} UpdateAction 表示要执行的更新操作类型。 属性 CUSTOM字符串 一项自定义更新所有内容都由游戏 指定。 LEADERBOARD字符串 与小游戏排行榜相关的 一项更新。 ErrorCodeType 小游戏错误代码#errorcode 中的一种 类型字符串 SignedPurchaseRequest 类型字符串 示例 Eii6e636mz5J47sfqAYEK40jYAwoFqi3x5bxHkPG4Q4.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImlzc3VlZF9hdCI6MTUwMDM5ODY3NSwicGxheWVyX2lkIjoiMTI0OTUyNTMwMTc1MjIwMSIsInJlcXVlc3RfcGF5bG9hZCI6Im15X2ZpcnN0X3JlcXVlc3QifQ PurchaseConfig 注册到游戏的商品的购买请求配置。 类型对象 属性 productID字符串 要购买商品的标识 developerPayload字符串 由开发者指定的可选负载 包含在所返回购买的签名请求中。 CustomUpdatePayload 代表 FBInstant.updateAsync 的自定义更新。 类型对象 属性 actionUpdateAction 对于自定义更新此属性应为“CUSTOM”。 template字符串 此自定义更新所使用模板的编号。 模板应在 fbapp-config.json 中预定义。请参阅 [捆绑包配置文档]https://developers.facebook.com/docs/games/instant-games/bundle-config获取有关 fbapp-config.json 的文档。 cta字符串| LocalizableContent 可选的行动号召按钮 文本。默认情况下我们会使用经本地化的“Play”作为按钮文本。 若要提供自定义行动号召的本地化版本 应传递一个包含默认行动号召的对象作为“default”值以及将语言键映射到翻译的 另一个对象作为“localizations”值。 image字符串 base64 编码图片的数据网址。 text字符串 | LocalizableContent 一条文本消息 或者是一个包含默认文本作为“default”值的对象 以及另一个将语言键映射到翻译内容作为“localizations”值的对象。 data对象 要附加到更新中的数据块。通过更新 开始的所有游戏会话都可以通过 FBInstant.getEntryPointData() 访问此数据块。转变为字符串时 此数据块必须小于或等于 1000 个字符。 strategy字符串 指定更新的发布 方式。可以是下列方式之一 “IMMEDIATE”— 更新应立即发布。 “LAST”— 更新应在游戏会话结束时发布。使用 “LAST”策略发送的是最近发送的更新。 “IMMEDIATE_CLEAR”— 更新将立即发布并清除其他任何待处理的 更新如通过“LAST”策略发布的更新。 如果未指定策略我们将默认为“IMMEDIATE”。 notification字符串 指定自定义更新的 通知设置。可以是“NO_PUSH”或“PUSH”默认为“NO_PUSH”。 仅将推送通知用于 对接收人来说非常显著且可立即操作的更新。另请注意并不一定 会发送推送通知具体取决于用户设置和平台政策。 LeaderboardUpdatePayload 表示 FBInstant.updateAsync 的一项排行榜更新。 类型对象 属性 actionUpdateAction 对于排行榜更新此属性应为 “LEADERBOARD”。 文本。默认情况下我们会使用经本地化的“Play Now”作为按钮文本。 name字符串 所更新排行榜的 名称。 text字符串 可选的文本消息。如果未指定将会提供 一条经本地化的回退消息。 LocalizableContent 代表一个字符串其中包含最终使用的本地化内容和默认值。 类型对象 属性 default字符串 要使用的字符串的默认值 查看者的语言设置不是 localizations 对象中的键时。 localizationsLocalizationsDict 指定每种语言设置中用于观看者 的字符串。 请参阅 https://origincache.facebook.com/developers/resources/?idFacebookLocales.xml 获取受支持的语言值的完整列表。 LeaderboardEntry 小游戏排行榜上的一个上榜分数 getScore( ) 获取上榜分数的分值。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getScore()); // 9001 }); 返回数字 返回整数的分数。 getFormattedScore( ) 获取与上榜分数相关的分值采用 与排行榜相同的分值格式。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getFormattedScore()); // 90.01 meters }); 返回字符串 返回有格式的分数。 getTimestamp( ) 获取排行榜上榜分数的上次更新时间戳。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getTimestamp()); // 1515806355 }); 返回数字 返回 Unix 时间戳。 getRank( ) 获取玩家分数在排行榜中的排行。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getRank()); // 2 }); 返回数字 返回上榜分数在排行榜的排行。 getExtraData( ) 获取与分数相关的开发者指定负载 或在没有设定时返回 null。 示例 leaderboard.setScoreAsync(42, {race: elf, level: 3}); .then(function(entry) { console.log(entry.getExtraData()); // {race: elf, level: 3} }); 返回字符串 与分数相关的开发者指定负载为可选 参数。 getPlayer( ) 获取与上榜分数相关玩家的信息。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getName()); // Sally }); 返回 LeaderboardPlayer LeaderboardPlayer 与上榜分数相关玩家的详情。 getName( ) 获取经本地化显示的玩家姓名。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getName()); // Sally }); 返回字符串 经本地化显示的玩家姓名。 getPhoto( ) 返回玩家公开头像的网址。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getPhoto()); // photo_url }); 返回字符串 玩家公开头像的网址。 getID( ) 获取玩家在游戏中的唯一标识。 示例 leaderboard.setScoreAsync(9001) .then(function(entry) { console.log(entry.getPlayer().getID()); // 12345678 }); 返回字符串 玩家在游戏中的标识。 为方便大家群策群力我们创建了一个 Facebook Instant Game 交流群814298516 。 欢迎同学们加入交流开发和运营经验。 转载于:https://juejin.im/post/5b69474551882562b924a721