openId是平台基于当前用户账号、当前小游戏信息、当前客户端等多个信息生成的用户唯一标识,开发者可使用openId关联各自的用户帐号体系。同个用户不同游戏的openId不同。
前置条件:开发者需要先进行域名白名单的配置,纯前端的游戏无法获取openid,具体详见:开发小游戏(服务端开发看)。
获取openId的方式:openId可通过外部服务调用的上下文获取,接口从请求的url的param中获取openid;目前平台只支持用上述方式获取openid,不支持在服务端调用TOP接口获取。
前端可以通过请求自己的服务端时,由服务端将获取到的openId手动回塞,返回给前端。一般不建议前端获取openId。前端没有需要的话,服务端获取openId可以不返回给前端。
async function test() {
let result
try {
result = await cloud.application.httpRequest({
//不需要完整域名,只需要接口访问路径即可; 该路径对应的服务端逻辑,需要在返回的response中塞入openId
'path': '/welcome', //path路径需要纯小写
'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)
}
--------- 执行云请求
test().then(res => { console.log("openId",res) }
注意:如果你要在cocos中使用空应用的话,需要参考《Cocos/Laya引擎适配》文档的FAQ关于空应用的内容。
cloudAppId 获取位置如下: