getAuth 获取身份验证(iOS 专业版无需此项)
新版入口地址: http://openapi.touchsprite.com/api/openapi (本网址仅为入口,不可使用浏览器直接访问) 同时支持 http 及 https 的 post 请求,兼容旧版地址
参数格式: JSON
请求方式:POST
客户端发送
{
"action": "getAuth",
"key":"233OivO1j9QOM0Am14hx31jKtv88wFoEXDZDxNUrZiD3kEqYzNcCAEe32ITwanzi",
"devices": ["f03b3e9a354f137d3c9bf3589e7662ae8","5e502808c7a1961bf6df44a234ef9a230"...],
"valid": 3600,
"time": 2592000
}
属性 | 类型 | 说明 |
---|---|---|
action | string | getAuth - 获取验证串 |
key | string | 开发者的 Access Key |
devices | array | 设备号列表,设备数量不能超过 Access Key 的最大设备数限制 |
valid | number | 期待验证串的有效期,单位秒,最大为 3600 |
time | number | 当前 Unix 时间戳 |
服务器正确返回
{
"status": 200,
"message":"xx",
"time": 1422930265,
"auth": "xx",
"valid": 3600,
"remainder_token": 4
}
属性 | 类型 | 说明 |
---|---|---|
status | number | 200 - 成功,400 - 参数错误,401 - 授权验证失败 |
message | string | status 不等于 200 时,返回错误提示 |
time | number | 当前 Unix 时间戳 |
auth | string | 验证串,直接填充到发送给触动服务的 auth 字段 |
valid | number | 验证串实际有效时间 |
devices | array | 触动精灵设备号列表 |
remainder_token | number | 剩余的令牌数,当剩余令牌为 0 时,getAuth 协议将调用失败 |
示例代码
local sz = require"sz"
local http = require"szocket.http"
local json = sz.json
local ltn12 = require"ltn12"
local response_body = {} -- 构造主体部位接受的地方
local post_data = {
--触动专业版 iOS 无需写入验证串
action = "getAuth",
key = "T4GrIwHvUHMgMpb4lmypgdmt111T1IGPxeC5hPqxgCgpMBzy2lpx4Y82ScXpxwp8", -- 需要替换成自己的 Key
devices = {getDeviceID()}, -- 设备号
time = os.time(),
valid = 3600,
}
post_data = json.encode(post_data)
local staus,code,header = http.request{
url = "http://openapi.touchsprite.com/api/openapi",
method = "POST",
headers =
{
["Content-Type"] = "application/x-www-form-urlencoded",
["Content-Length"] = #post_data,
},
source = ltn12.source.string(post_data),
sink = ltn12.sink.table(response_body), --用 ltn12 转化接受的数据为 lua 可用
}
dialog(table.concat(response_body))
--将会打印以下内容,这是一个 json,将之使用 json.decode 处理后取 auth 字段保存起来供我们接下来使用
--{"status":200,
--触动专业版 iOS 无需写入验证串
--"auth":"直接马赛克好了,那么长的一串",这就是我们获取到的验证串,由于太长我就马赛克掉了
--"valid":2592000,"devices":["aab9d7903393a992dcc0c0f51b595b70"],
--"remainder_token":0,
--"time":1470216706}]]
--local auth = "eyJrZXkiOiJGSmRrNFdBQmY2WnByc0NFSG40ZzNUcmZZMDlBNk9HNXNcL0NiczNzblhzdTQ3NTczRDJ5dXFNN1wvdXFlRFwvMldCclZyU3hEbEdEb0owWUJtV1RpekV5OWlFMVdoNmpiZ0Y4dG5mWWwrY0hKSHBVTmtSOWx4QkxCQjVvOTN1WTZGMFwvRzEyODBxY09WQUtXazExVklqT1pQM3pRVzJzeUVMeDVvM200QzVYcitKQ3pxdmhqM2hjdWx1MXJCdjJkRUg0YTlGaWZtNmpERXUyU1NkajJqcWRYb0M2Y013eUZnb08rc1dqVUtNNUtqekZZN3pJc1IrVTZwM0R3MWZnQ2dSRVZCdUhpRFdyUGdCXC9HbXNLaVZoM1JGdzF6aWlwWEVJSnhtZ2VOeUFqNnlVSGp2K2lVVkVGTThzNkdVc05UMUN1ZmpHK0NGV3VyRjg4VTZSQlRKeGdhQT09IiwiZGF0YSI6IjN0TFhNVFRKRTJkdWZtUlFcL2tuTjlcL3Z4Qm8zOFhlT2t1WE1UUHVKSHMrYXRMdFc3YW96QzlFY3IwcFwvTVJGdlJFRDlcL3NaY3p6ellQRlI4aDJocmtyWjhjUzdSQ2F0ZDRLMHhNXC9zaGpXclNzQTd1NG5HaE5kdTMyeTQ1bm9TUXgiLCJtZDUiOiJQdHp0YXo5b1ZKalgzb29HcTRVczVuYWgyVVwvbkxKcXpFNkNHMWVXSnRPMFVpa2ZhNjFEa1RNZVNhZ0hSUlwvYlFtdThYWXlOQWY3RERhekJxSDZcL2ZIR0hObkhSYzhpeDVOWWo1Mmt1cERuK3VMb3BDUlM0Q0lKREdhbjZqd2VnRnUzQjdia0RQbERRYzRKRlpCNmpXc1B0emFkdGtWVUZvOWYxazFKNk1Qd3dGNUx2WHVsSDB1MTg1SVVCeHJyNnZBRXdhcVBxUTYxbUpVZFg5ZE5RWTR2UzVoalp1UU85bXpEd3d1UDhMblwvVVY1QnAxUmNVVmZqVFA4MThzTjRyTHhCZk9lMzBHR2pVYkR1SEhpUlwvVjhyVzZGN0RiYWpIYXBcL0lnbmJrN1wvYkJaU1NjTEF4dkNkajc2Y2EwSmlqNHJqOHZPRG0rcXFGeWVtMWJlcFV3VUhBPT0ifQ=="
注意事项
Access Key 可以在开发者平台获取
令牌数与连接设备数和连接速度无关
获取触动精灵设备号函数:getDeviceID ,获取触动精灵安卓账号 ID 函数:getTSAccountID
详细示例详见完整示例代码
触动精灵 iOS 专业版无需调用此函数。
安卓标准版、iOS 标准版及 iOS 专业版必须有授权,授权为试用状态无法调用。