# TC 接入

7c云网络验证提供了TC对接,方便 TC 开发者接入。

# 接入须知

# 对接视频

待出

# 获取方式

下载地址: 或者加群675107742在群文件下载SDK,有问题也可在此群交流。

# 使用方式

先将下载到的TCSDK.rar文件解压出来,打开卡密登录例子 双击卡密登录例子.tcproj打开

压缩包中包含卡密登录例子,用户登录例子,试用登录例子。

# 卡密登录例子

var 线程ID
//从这里开始执行
var appKey = ""//7c云网页后台软件的appKey
var appSecret = ""//7c云网页后台软件的appSecret
var isLoginAgain = true//断线重登
var autoHeartbeat = true//开启心跳

function 卡密登录例子_初始化()
    editsettext("卡密", filereadini("卡密", "card", "C:/Config.ini"))
end

function 卡密_失去焦点()
    filewriteini("卡密", "card", editgettext("卡密"), "C:/Config.ini")
end

function 解绑_点击()
    //这里添加你要执行的代码
    init(appKey, appSecret, isLoginAgain, autoHeartbeat)//初始化
    if(strlen(editgettext("卡密")) == 0)
        messagebox("卡密不能为空", "7c云")
        return
    end
    if(strlen(editgettext("卡密")) < 10)
        messagebox("卡密长度不能低于10位", "7c云")
        return
    end
    SetCard(editgettext("卡密"))//设置卡密
    var res = CardUnbindDevice()//卡密解绑
    //traceprint(arraytostring(res))
    if(res["code"] == 0)
        messagebox(res["message"])
    else
        messagebox(res["message"])
    end
end

function 执行()
    var tokenPath = "C:/token.txt"
    init(appKey, appSecret, isLoginAgain, autoHeartbeat)//初始化
    if(strlen(editgettext("卡密")) == 0)
        messagebox("卡密不能为空", "7c云")
        return
    end
    if(strlen(editgettext("卡密")) < 10)
        messagebox("卡密长度不能低于10位", "7c云")
        return
    end
    SetCard(editgettext("卡密"))//设置卡密
    
    var file = fileopen(tokenPath)
    var content
    if(file > 0)
        content = fileread(file, 50)
    end
    fileclose(file)
    if(strlen(content) > 0)
        CardLogout(content) //卡密退出上次的登录
    end
    
    var res = cardLogin(tokenPath)//卡密登录
    if(res["code"] == 0)
        控件是否有效("开始", false)
        messagebox("到期时间:" & res["result"]["expires"], "7c云")
    else
        messagebox(res["message"])
        exit()
    end
    //*********************登录成功-下面开始你的代码**************************
    
    
    
    
end


function 开始_点击()
    线程ID = threadbegin("执行", "")
end

function 停止_点击()
    threadclose(线程ID)
    threadclose(卡密心跳线程ID)
    控件是否有效("开始", true)
    exit()
end
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

# 用户登录例子

var 线程ID
var appKey = ""//7c云网页后台软件的appKey
var appSecret = ""//7c云网页后台软件的appSecret
var isLoginAgain = true//断线重登
var autoHeartbeat = true//开启心跳

function 执行()
    var tokenPath = "C:/token.txt"
    init(appKey, appSecret, isLoginAgain, autoHeartbeat)//初始化
    if(strlen(editgettext("账号")) == 0)
        messagebox("账号不能为空", "7c云")
        return
    end
    if(strlen(editgettext("账号")) < 6)
        messagebox("账号长度不能低于6位", "7c云")
        return
    end
    
    var file = fileopen(tokenPath)
    var content
    if(file > 0)
        content = fileread(file, 50)
    end
    fileclose(file)
    if(strlen(content) > 0)
        UserLogout(content, editgettext("账号")) //退出用户上次的登录
    end
    
    var res = UserLogin(editgettext("账号"), editgettext("密码"), tokenPath)//用户登录
    if(res["code"] == 0)
        messagebox("到期时间:" & res["result"]["expires"], "7c云")
    else
        messagebox(res["message"])
        exit()
    end
    //*********************登录成功-下面开始你的代码**************************
    
    
    
end


功能 用户名登录例子_初始化()
    //这里添加你要执行的代码
    editsettext("账号", filereadini("账号", "username", "C:/Config.ini"))
    editsettext("密码", filereadini("密码", "password", "C:/Config.ini"))
结束


功能 账号_失去焦点()
    //这里添加你要执行的代码
    filewriteini("账号", "username", editgettext("账号"), "C:/Config.ini")
结束


功能 密码_失去焦点()
    //这里添加你要执行的代码
    filewriteini("密码", "password", editgettext("密码"), "C:/Config.ini")
结束


功能 解绑_点击()
    if(strlen(editgettext("账号")) == 0)
        messagebox("账号不能为空", "7c云")
        return
    end
    if(strlen(editgettext("账号")) < 6)
        messagebox("账号长度不能低于6位", "7c云")
        return
    end
    init(appKey, appSecret, isLoginAgain, autoHeartbeat)//初始化
    var res = UserUnbindDevice(editgettext("账号"))//用户解绑
    if(res["code"] == 0)
        控件是否有效("开始", false)
        messagebox(res["message"])
    else
        messagebox(res["message"])
    end
结束

功能 注册_点击()
    //这里添加你要执行的代码
    if(strlen(editgettext("账号")) == 0)
        messagebox("账号不能为空", "7c云")
        return
    end
    if(strlen(editgettext("账号")) < 6)
        messagebox("账号长度不能低于6位", "7c云")
        return
    end
    if(strlen(editgettext("密码")) == 0)
        messagebox("密码不能为空", "7c云")
        return
    end
    if(strlen(editgettext("密码")) < 6)
        messagebox("密码长度不能低于6位", "7c云")
        return
    end
    if(strlen(editgettext("卡密")) == 0)
        messagebox("卡密不能为空", "7c云")
        return
    end
    if(strlen(editgettext("卡密")) < 10)
        messagebox("卡密长度不能低于10位", "7c云")
        return
    end
    init(appKey, appSecret, isLoginAgain, autoHeartbeat)//初始化
    var res = UserRegister(editgettext("账号"), editgettext("密码"), editgettext("卡密"))//用户注册
    if(res["code"] == 0)
        messagebox(res["message"])
    else
        messagebox(res["message"])
    end
结束

功能 修改密码_点击()
    //这里添加你要执行的代码
    if(strlen(editgettext("账号")) == 0)
        messagebox("账号不能为空", "7c云")
        return
    end
    if(strlen(editgettext("账号")) < 6)
        messagebox("账号长度不能低于6位", "7c云")
        return
    end
    if(strlen(editgettext("密码")) == 0)
        messagebox("密码不能为空", "7c云")
        return
    end
    if(strlen(editgettext("密码")) < 6)
        messagebox("密码长度不能低于6位", "7c云")
        return
    end
    if(strlen(editgettext("新密码")) == 0)
        messagebox("新密码不能为空", "7c云")
        return
    end
    if(strlen(editgettext("新密码")) < 6)
        messagebox("新密码长度不能低于6位", "7c云")
        return
    end
    init(appKey, appSecret, isLoginAgain, autoHeartbeat)//初始化
    var res = UserChangePassword(editgettext("账号"), editgettext("密码"), editgettext("新密码"))//用户修改密码
    traceprint(arraytostring(res))
    if(res["code"] == 0)
        messagebox(res["message"])
    else
        messagebox(res["message"])
    end
结束

功能 开始_点击()
    //这里添加你要执行的代码
    线程ID = threadbegin("执行", "")
结束


功能 停止_点击()
    //这里添加你要执行的代码
    threadclose(线程ID)
    threadclose(用户心跳线程ID)
    控件是否有效("开始", true)
    exit()
结束
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

# 初始化

# 初始化SDK

# 语法

init(appKey, appSecret, isLoginAgain, autoHeartbeat);
1

# 参数

参数名 必传 类型 参数说明
appKey string 软件的appKey
appSecret string 软件的appSecret
autoHeartbeat boolean true开启心跳,false关闭心跳
isLoginAgain boolean true开启断线重登,false关闭断线重登

# 卡密登录

注意

调用此接口前需调用 SetCard(card) 初始化卡密 登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。

# 语法

SetCard(card);
var res = cardLogin(tokenPath);
if(res["code"] == 0)
    messagebox("到期时间:" & res["result"]["expires"], "7c云")
else
    messagebox(res["message"])
    exit()
end
1
2
3
4
5
6
7
8

# 参数

参数名 必传 类型 参数说明
tokenPath string 存放登录令牌路径

# 返回值

array数组,例:{ result: { cardType: '月卡', token: '8wr17hGcTs5lVVJ0liL97d6McNEaDTKk', expires: '2021-09-17 01:49:38', expires_ts: 1631814578, config: '', server_time: 1624110506 }, message: 'ok', code: 0 }

# 卡密退出登录

# 语法

CardLogout(token)
1

# 参数

参数名 必传 类型 参数说明
token string 登录令牌

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 卡密解绑设备

注意

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。

# 语法

var res = CardUnbindDevice()//卡密解绑
if(res["code"] == 0)
    messagebox(res["message"], "7c云")
else
    messagebox(res["message"], "7c云")
end
1
2
3
4
5
6

# 参数

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 卡密绑定设备上解绑

注意

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。

# 语法

var res = CardUnbindDeviceBybindDevice();
1

# 参数

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 卡密设置解绑密码

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该密码用于绑定设备丢失或者其它原因导致无法在老设备登录时解绑设备。

# 语法

var res = SetCardUnbindPassword(password);
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码(6-10位数字和字母组合的字符串)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 卡密通过密码解绑设备

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。 该接口用于绑定设备丢失或者其它原因导致无法在老设备登录时,通过解绑密码解绑设备。

# 语法

var res = CardUnbindDeviceByPassword(password);
1
参数名 必传 类型 参数说明
password string 解绑密码(6-10位数字和字母组合的字符串)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 卡密充值(以卡充卡)

# 语法

var res = CardRecharge(card, useCard);
1

# 参数

参数名 必传 类型 参数说明
card string 被充值的卡密(长度不超过45位)
useCard string 充值使用的卡密(长度不超过45位)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 用户注册(通过卡密)

# 语法

var res = UserRegister(username, password, card);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
password string 用户密码(长度6-30位)
card string 注册使用的卡密(长度不超过45位)

# 返回值

array数组,例:{"code": 0, "message": "ok"}

# 用户登录

# 语法

var res = UserLogin(username, password, tokenPath)
if(res["code"] == 0)
    messagebox("到期时间:" & res["result"]["expires"], "7c云")
else
    messagebox(res["message"], "7c云")
    exit()
end
1
2
3
4
5
6
7

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
password string 用户密码(长度6-30位)
tokenPath string 存放登录令牌路径

# 返回值

array数组,例:{ result: { cardType: '月卡', token: '8wr17hGcTs5lVVJ0liL97d6McNEaDTKk', expires: '2021-09-17 01:49:38', expires_ts: 1631814578, config: '', server_time: 1624110506 }, message: 'ok', code: 0 }

# 用户退出登录

# 语法

var res = UserLogout(token, username)
1

# 参数

参数名 必传 类型 参数说明
token string 登录令牌
username string 用户名(长度不能超过20位)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 用户修改密码

# 语法

var res = UserChangePassword(username, password, newPassword);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
password string 用户密码(长度6-30位)
newPassword string 新密码(长度6-30位)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 用户充值(通过卡密)

# 语法

var res = UserRecharge(username, card);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过20位)
card string 充值使用的卡密(长度不超过45位)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 用户解绑设备

# 语法

var res = UserUnbindDevice();
1

# 参数

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 试用登录

注意

登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。

# 语法

var res = TrialLogin();
1

# 参数

# 返回值

array数组

# 获取卡密配置

# 语法

var res = GetCardConfig();
1

# 参数

# 返回值

array数组,例:{ result: { config: '', server_time: 1624120946 }, message: 'ok', code: 0 }

# 更改卡密配置

# 语法

var res = UpdateCardConfig(config);
1

# 参数

参数名 必传 类型 参数说明
config string 自定义配置(长度不能超过512位)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 获取用户配置

# 语法

var res = GetUserConfig(username);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名

# 返回值

array数组,例:{ result: { config: '迪迦', server_time: 1624121563 }, message: 'ok', code: 0 }

# 更改用户配置

# 语法

var res = UpdateUserConfig(username, config);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名
config string 自定义配置(长度不能超过512位)

# 返回值

array数组,例:{"code": 0, "message": "OK"}

# 获取软件配置

# 语法

var res = GetSoftwareConfig();
1

# 参数

# 返回值

array数组,例:{ result: { config: '迪迦', server_time: 1624121758 }, message: 'ok', code: 0 }

# 获取软件公告

# 语法

var res = GetSoftwareNotice();
1

# 参数

# 返回值

array数组,例:{ result: { server_time: 1624121862, notice: '泰罗' }, message: 'ok', code: 0 }

# 获取软件版本号和下载链接

# 语法

var res = GetSoftwareVersion();
1

# 参数

# 返回值

array数组,例:{ result: { server_time: 1624121862, version: '1.0.1', url:'www.baidu.com' }, message: 'ok', code: 0 }

# 获取远程变量

注意

调用此接口前 需要登录成功后才能调用。

# 语法

var res = GetRemoteVar(key);
1

# 参数

参数名 必传 类型 参数说明
key string 远程变量名(长度不能超过64位)

# 返回值

array数组,例:{ result: { server_time: 1624122124, varValue: '斯奥特曼' }, message: 'ok', code: 0 }

# 获取远程数据

注意

调用此接口前 需要登录成功后才能调用。

# 语法

var res = GetRemoteData(key);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)

# 返回值

array数组,例:{ result: { server_time: 1624122295, value: '奥特曼' }, message: 'ok', code: 0 }

# 操作远程数据

# 新增远程数据

注意

调用此接口前 需要登录成功后才能调用。

# 语法

var res = CreateRemoteData(key, value);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)
value string 远程数据值(长度不能超过256位)

# 返回值

array数组,例:{ result: { server_time: 1624122453 }, message: 'ok', code: 0 }

# 修改远程数据

注意

调用此接口前 需要登录成功后才能调用。

# 语法

var res = UpdateRemoteData(key, value);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)
value string 远程数据值(长度不能超过256位)

# 返回值

array数组,例:{ result: { server_time: 1624122453 }, message: 'ok', code: 0 }

# 删除远程数据

注意

调用此接口前 需要登录成功后才能调用。

# 语法

var res = DeleteRemoteData(key);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据key(长度不能超过64位)

# 返回值

array数组,例:{ result: { server_time: 1624122453 }, message: 'ok', code: 0 }

# 云函数

注意

调用此接口前 需要登录成功后才能调用。

# 语法

var res = CallRemoteFn(fnName, params);
1

# 参数

参数名 必传 类型 参数说明
fnName string 云函数名(长度不能超过64位)
params string 调用云函数时传入的参数

# 返回值

array数组,例:{"result":{"return":"55","server_time":1689788200},"message":"ok","sign":"236cd75d551fb991ac88684761778a17","nonce":"vwWSKfwOgbLocFzg15OX","code":0}

例子:

var res = CallRemoteFn("add", "21, 34");
if (res["code"] == 0){
  traceprint("云函数调用结果:" & res["result"]["returnValue"])
}
else{
  traceprint("云函数调用失败:" & res["message"])
}
1
2
3
4
5
6
7