来自小游戏端发起的网络请求,会通过平台网关转发到外部云服务,网关会自动带上一些开放相关的上下文参数信息,因此针对使用外部云服务的情况,需要进行外部云服务的对接。每个外部云服务,对应可在平台录入外部域名白名单用作游戏内的网络请求,域名录入完成后,会针对对应的外部云服务,生成一个唯一的标识:cloudAppId。详细内容请看:外部云服务对接。
先选择云服务——点击的【云应用套件(推荐)】。
点击后,可进行域名白名单添加。
在小游戏开发 > 开发设置 > 服务器域名白名单>域名白名单 > 添加白名单 > 添加 。
填入想要申请的域名,如果有多个域名点击添加,最多可以添加20个域名白名单,如果需要20个以上域名需求,请联系运营小二单独申请。
申请理由请填入小游戏域名申请。
点击确定后,创建成功。
注意:域名白名单的有效时间为365天,到期前请使用续期功能,进行续期。
?
小游戏前后端通信时,需要使用cloudAppId参数,参数位置如下
?
调用示例如下:
//game.js文件初始化示例代码 import cloud from '@tbmp/mp-cloud-sdk'; cloud.init({ //test、online env: 'test' }); ---------------------------------- //调用接口的方法 async function testCloud() { let result try { result = await cloud.application.httpRequest({ //不需要完整域名,只需要接口访问路径即可 'path': '/welcome', 'method': 'POST', //POST请求需要指定下请求格式,只支持application/json。 如:"content-type":"application/json;charset=UTF-8" 'headers': { "Content-Type":"application/json;charset=UTF-8"}, 'params': {"name":"hanruo","action":"test"}, 'body': { "xftest":"hhh", "id":"1234"}, 'exts': { //cloudAppId为域名白名单配置后获取,在配置处查看具体参数 "cloudAppId": "xxxx", // 单位ms "timeout": 4000, //调用需要填写该字段,包括协议头以及端口号(可省略),支持http、https "domain":"https://www.taobao.com" } }); } catch (error) { console.log(error) } console.log("result:", JSON.stringify(result)); } ---------------------------------- //执行方法 testCloud(); ================================== //如果需要用户授权,服务端获取对应token,则如下调用: //执行方法 my.authorize({ scopes: 'scope.userInfo', //需要授权的权限包,此处以用户信息权限包为例 success: (res) => { console.log("res:", res); testCloud(); }, fail(res) { console.log("fail:", res); } });
前端通过cloud.application.httpRequest调用服务端。服务端接收到请求后,可获取除自定义参数外的系统参数。具体参数:云应用调用。
注意:用户自定义的参数不能和系统参数同名,否则会被覆盖掉。
示例
JAVA为例:
request.getParameterMap()
获取参数如下:
{ "access_token":[ "50000800a35OYySsAHauUie7oudnphrweajdphmVUgolwL318fcaedeiwtFKxxxxx"//用户授权 sessionKey ], "source_app_id":[ "3000000083xxxx" ], "app_key":[ "3427xxxx" ], "mix_nick":[ "专01iX1c6xL0GdYGnCEZeOviGFE6pjWHaaOS6xxxxx"//混淆用户昵称 ], "open_id":[ "AAFDUQQSAOIKi_Utxxxxxxx" //当前登录用户的openId ], "mini_app_id":[ "3000000083xxxx" ], "sign":[ "D40C31902FED8D55A181C53xxxxxx"//除sign字段外的所有参数的加签信息,可参考文件验签:https://open.taobao.com/v2/doc#/abilityToOpen?treeId=780&docType=1&docId=118394 ], "env":[ "test" //当前外部服务的调用环境,入参为:test或者online,对应在云开发中绑定的云容器的测试环境和正式环境。在发布上线前注意调整env为online,调用正式环境。 ], "app_owner_open_id":[ "AAFDUQQSAOIKi_UtQxxxxx" ], "request_id":[ "213e21d716787092743006675e1d16" ], "source_ip":[ "42.120.74.xxx" ], "name":[ "hanruo"//业务自定义参数 ], "action":[//业务自定义参数 "test" ], }
如果使用了空应用,则已经支持直接访问外部的服务器http接口。
但如果需要访问【外部资源域名或websocket】需要额外申请域名白名单。
目前平台可通过以下路径申请域名白名单:
其中Request类已不建议接入,其他具体该申请哪类,需要游戏前端同学参考下面具体使用的哪些API,然后服务端或前端同学将使用的api对应的访问域名地址申请域名白名单。
具体请查看:小游戏域名管控。
申请审核流程:联系对应业务对接人去内部后台查询。
小游戏的后端,可以通过TOP API,调用平台侧提供的业务能力API。操作流程:申请对应权限包后,下载最新SDK,然后编写服务端代码。
下载最新SDK入口:
编写服务端代码示例:
/** url为请求的服务地址: * 正式环境【HTTP请求地址 http://gw.api.taobao.com/router/rest * HTTPS请求地址 https://eco.taobao.com/router/rest】 * 海外正式环境【HTTP请求地址 http://api.taobao.com/router/rest * HTTPS请求地址 https://api.taobao.com/router/rest】 **/ TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret); //找到对应类,比如 taobao.trade.fullinfo.get 接口对应的请求类为TradeFullinfoGetReques TradeFullinfoGetRequest req = new TradeFullinfoGetRequest(); //设置业务参数 req.setFields("tid,type,status,payment,orders,promotion_details"); req.setTid(123456789L); // 针对需要用户授权的api,sessionKey为用户授权后获得的accessToken,通常此处为商家授权,目前获得商家授权的方式,可以通过虚拟直充的对接文档查看。 无需用户授权的API,可直接调用。 TradeFullinfoGetResponse rsp = client.execute(req, sessionKey); System.out.println(rsp.getBody());
1)业务方先授权需要实现的奇门SPI,开发者不用感知。
2)进入开发者控制查看需要实现的SPI:
注意此处必须要申请权限的appkey的拥有者才能看到已授权的场景。
3)下载上述SDK。
4)实现对应接口。
根据api文档定义返回结构,并提供接口地址。
奇门需要域名并配置云SLB。