调用获取Token接口时使用的域名需与本接口域名保持一致,例如本接口使用“connect-api.cloud.huawei.com”,则调用获取Token接口需使用“https://connect-api.cloud.huawei.com/api/jas/open/players/player-accounts/team-player/convert”。
您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明。
华为开发者联盟上的游戏从一个账号转移到另一个账号进行维护,该游戏资产归属于转入方。
转出方/转入方可以调用此接口,向华为服务器批量提交转让前游戏关联的玩家标识teamPlayerId等信息,批量获取游戏转让后对应的teamPlayerId等信息。
调用此接口前,请确保转出方/转入方已完成游戏转移,否则均将无权转换teamPlayerId。
单次接口请求最多可以获取1000条teamPlayerId数据。
请勿频繁调用此接口,调用的时间间隔请控制在3秒以上。
承载协议:HTTPS POST
接口方向:开发者服务器->华为游戏服务器
接口URL:
数据格式:
请求Body中使用JSON格式携带更相关信息,参数如下表所示。
POST /api/jas/open/players/player-accounts/team-player/convert HTTP/1.1
Host: connect-api.cloud.huawei.com
Content-Type: application/json
client_id: 41******7168
appId: "*****"
Authorization: Bearer ******
{
"srcCpId": 4130****71055,
"dstCpId": 4008****74585,
"teamPlayerIds":[
"**********",
"**********",
"**********"
]
} | 参数名称 | 是否必选 | 类型 | 参数说明 |
|---|---|---|---|
| ret | 是 | JosRet | 包含返回码及描述信息的JSON字符串,格式为{"code":retcode, "msg": "description"},retcode为返回码,description为返回码描述信息。 |
| data | 是 | List<ConvertTeamPlayerIdItem> | 单次接口请求任务的查询结果。 |
JosRet
| 参数名称 | 是否必选 | 类型 | 参数说明 |
|---|---|---|---|
| code | 是 | int | 单次接口请求任务的结果返回码: 0:请求成功。 -1:请求失败。 3002:鉴权错误。 |
| msg | 否 | String | 失败时的描述信息。 |
ConvertTeamPlayerIdItem
| 参数名称 | 是否必选 | 类型 | 参数说明 |
|---|---|---|---|
| srcCpId | 是 | Long | 游戏转出方的开发者Developer ID。 |
| srcTeamPlayerId | 是 | String | 转让前,游戏的玩家标识teamPlayerId。 |
| dstCpId | 是 | Long | 游戏转入方的开发者Developer ID。 |
| dstTeamPlayerId | 是 | String | 转让后,游戏的玩家标识teamPlayerId。 |
| errCode | 是 | int | 查询单个teamPlayerId的结果返回码: 0:成功。 -1:失败。 |
Content-Type: application/json; charset=utf-8
{
"ret": {
"code": 0,
"msg": "string"
},
"data": [
{
"srcCpId": 4330****71055,
"srcTeamPlayerId": "******",
"dstCpId": 4130****71055,
"dstTeamPlayerId": "*****",
"errCode": 0
}
]
} Java
/**
* 批量转换teamPlayerId
*
* @param domain 请根据您的服务器部署地就近选择对应站点的URL,与获取token时使用的domain保持一致
* @param client_id 用于鉴权的客户端ID
* @param token post认证请求的token
* @param teamPlayerIds 需要查询的teamPlayerId列表
* @param appId 游戏appId
*/
private static void batchGetOpenIds(String domain, String client_id, String token, List<String> teamPlayerIds, String appId) {
try {
// 接口URL,domain请根据您的服务器部署地就近选择对应站点的URL且与获取token时使用的domain保持一致
HttpPost post = new HttpPost(domain + "/api/jas/open/players/player-accounts/team-player/convert");
// 构造消息头
post.setHeader("Authorization", "Bearer " + token);
post.setHeader("client_id", client_id);
post.setHeader("appId", appId);
// 构造消息实体
JSONObject keyString = new JSONObject();
keyString.put("srcCpId", srcCpId);
keyString.put("dstCpId", dstCpId);
keyString.put("teamPlayerIds", teamPlayerIds); // 原主体的teamPlayerId
StringEntity entity = new StringEntity(keyString.toString(), Charset.forName("UTF-8"));
entity.setContentEncoding("UTF-8");
// 发送Json格式的数据请求
entity.setContentType("application/json");
post.setEntity(entity);
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpResponse response = httpClient.execute(post);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
BufferedReader br =
new BufferedReader(new InputStreamReader(response.getEntity().getContent(), Consts.UTF_8));
String result = br.readLine();
System.out.println(result);
JSONObject object = JSON.parseObject(result);
}
post.releaseConnection();
httpClient.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
} C#
/**
* 批量转换teamPlayerId
*
* @param domain 请根据您的服务器部署地就近选择对应站点的URL,与获取token时使用的domain保持一致
* @param clientId 用于鉴权的客户端ID
* @param token post认证请求的token
* @param teamPlayerIds 转让前游戏的玩家标识teamPlayerId列表
* @param appId 游戏appId
* @Param srcCpId 游戏转出方的开发者Developer ID
* @Param dstCpId 游戏转入方的开发者Developer ID
*/
static void convertTeamPlayerId(string domain, string clientId, string token, List<string> teamPlayerIds, string appId, long srcCpId, long dstCpId)
{
try
{
// 接口URL,domain请根据您的服务器部署地就近选择对应站点的URL且与获取token时使用的domain保持一致
var requestUrl = domain + "/api/jas/open/players/player-accounts/team-player/convert";
HttpWebRequest request = WebRequest.Create(requestUrl) as HttpWebRequest;
request.Method = "post";
request.ContentType = "application/json";
request.Headers.Add("client_id", clientId);
request.Headers.Add("Authorization", "Bearer " + token);
request.Headers.Add("appId", appId);
Dictionary<string, object> dic = new Dictionary<string, object>
{
{"srcCpId", srcCpId},
{"dstCpId", dstCpId},
{"teamPlayerIds", teamPlayerIds}
};
string sendData = JsonConvert.SerializeObject(dic, Formatting.Indented);
Console.WriteLine(sendData);
byte[] byteData = Encoding.GetEncoding("utf-8").GetBytes(sendData);
request.ContentLength = byteData.Length;
Stream postStream = request.GetRequestStream();
postStream.Write(byteData, 0, byteData.Length);
postStream.Close();
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
string strJson = reader.ReadToEnd();
Console.WriteLine(strJson);
reader.Close();
response.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
} PHP
/**
* 批量转换teamPlayerId
*
* @param string $domain 请根据您的服务器部署地就近选择对应站点的URL,与获取token时使用的domain保持一致
* @param string $client_id 用于鉴权的客户端ID
* @param string $token post认证请求的token
* @param array $teamPlayerIds 转让前游戏的玩家标识teamPlayerId列表
* @param string $appId 游戏appid
* @Param long $srcCpId 游戏转出方的开发者Developer ID
* @Param long $dstCpId 游戏转入方的开发者Developer ID
* @throws Exception
*/
public function batch_convert_teamPlayerIds(string $domain, string $client_id, string $token, array $teamPlayerIds, string $appId, long $srcCpId, long $dstCpId)
{
$curl = curl_init();
$data = array("teamPlayerIds" => $teamPlayerIds, "srcCpId" => $srcCpId, "dstCpId" => $dstCpId);
curl_setopt_array($curl, array(
CURLOPT_URL => $domain . '/api/jas/open/players/player-accounts/team-player/convert',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
'client_id: ' . $client_id,
'Authorization: Bearer ' . $token,
'Content-Type: application/json',
'appId: ' . $appId
),
));
$response = curl_exec($curl);
if (curl_error($curl)) {
throw new Exception(curl_error($curl));
}
curl_close($curl);
$result = json_decode($response, true);
var_dump($result);
} Python
from getToken import *
class BatchGetOpenIdsSolution:
@staticmethod
def batch_convert_team_player_ids(domain, client_id, access_token, team_player_id, app_id, src_cp_id, dst_cp_id):
url = domain + '/api/jas/open/players/player-accounts/team-player/convert'
data = {"teamPlayerIds": team_player_id, "srcCpId": src_cp_id, "dstCpId": dst_cp_id}
payload = json.dumps(data)
headers = {
'client_id': client_id,
'Authorization': 'Bearer ' + access_token,
'Content-Type': 'application/json',
'appId': app_id
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
if __name__ == "__main__":
# 请根据您的服务器部署地就近选择对应站点的URL,这里以中国站点域名为例
input_domain = 'https://connect-api.cloud.huawei.com'
# 客户端ID
input_client_id = 'xxxxxxx'
# 客户端密钥
input_client_secret = 'xxxxxxxx'
# 获取token
token_function = GetToken()
input_access_token = token_function.get_token(input_domain, input_client_id, input_client_secret)
# 游戏appId
input_app_id = 'xxxxx'
# 需要转换的teamPlayerIds列表,单次最大不要超过1000个,这里以2个为例
input_player_Ids = ['xxxxxxx', 'xxxxxx']
# 游戏转出方的开发者Developer ID
input_src_cp_id = 111111
# 游戏转入方的开发者Developer ID
input_dst_cp_id = 222222
batch_function = BatchGetOpenIdsSolution()
batch_function.batch_convert_team_player_ids(input_domain, input_client_id, input_access_token, input_player_Ids, input_app_id, input_src_cp_id, input_dst_cp_id)