96b1edff45
iotlcm-upstream-chan:运营商上游通道适配服务(统一 /sim/* 协议)。 - 内联原私有依赖:yunze-public → internal/pub/(10 包 18 文件), yunze-pb/pb → internal/pb/(9 文件);Consul 注册改用官方 gogf/gf/contrib/registry/consul/v2(API 兼容) - Go module:yz-svr → git.5iot.com/iotlcm-public/iotlcm-upstream-chan - 修复 mingqian 包测试:实现重构后 `adapter.operations` 字段已移除, 测试断言按当前实现语义重写(不改产品行为) - 凭据与内部标识脱敏:MySQL/Redis/Consul 凭据、私网与生产 IP、 内网域名、真实手机号、注释里的真实 token/transid - 移除内部资产:CI 触发器、生产通道种子 SQL、真实凭据测试资源文档 - Dockerfile 改用公共基础镜像,移除写死的 registry 凭据 - 补 Apache-2.0 LICENSE,重写 README,LF 行尾 + .gitattributes
26 lines
1.1 KiB
Markdown
26 lines
1.1 KiB
Markdown
# Apika mobile shared-token channel
|
|
|
|
Use `temp_model=shared_token` with template key `sim_onelink_kedang_v1`.
|
|
|
|
Set `token.baseUrl` to `http://test.iotapi.apika.cn` in the test environment
|
|
or `https://iotapi.apika.cn` in production. The token path is
|
|
`/iot-api/iot-card-info/getRefreshToken`.
|
|
|
|
Channel fields:
|
|
|
|
- `app_key`: Apika `appKey`, sent in the request header and body.
|
|
- `app_secret`: Apika `appSecret`, sent in the request header and body and used
|
|
to calculate the signature.
|
|
- `chan_config`: `{"appId":"..."}`; `appId` is sent as JSON field `appid`.
|
|
|
|
The request sends `appKey`, `appSecret`, and `signature` in both the headers
|
|
and JSON body. The JSON body also contains `appid`.
|
|
|
|
The signature is calculated by building `{appKey}:{appSecret}` with the
|
|
literal braces, hashing its UTF-8 bytes with SHA-256, converting the digest to
|
|
uppercase hexadecimal, and Base64-encoding that hexadecimal string.
|
|
|
|
The returned `data.shareToken` is cached for five minutes and refreshed thirty
|
|
seconds before expiry. The returned `transid` is not used as the OneLink
|
|
business request transaction ID.
|