一次性 APPKEY
APPKEY 的安全处理
APPKEY 是应用程序使用 AmiVoice API 时的"服务认证密钥字符串",如果泄露可能会被滥用。如果将 APPKEY 嵌入应用程序中,恶意第三方可能会从应用程序中提取 APPKEY。通常,请不要将您自己拥有的 APPKEY 发送到应用程序用户的机器上。相反,请使用具有有效期限的一次性 APPKEY,以便即使泄露也能将影响范围降到最低。
- 一次性 APPKEY 与 MyPage 上列出的 APPKEY 具有相同的功能,是一个"服务认证密钥字符串",但不同之处在于它根据"发行日期和有效时间"设置了"有效期限日期"。 此外,还可以对连接源的 IP 地址进行限制。
- 一次性 APPKEY 的发行数量没有上限。
- 特别是对于 Web 应用程序,请避免在 HTML 或 JavaScript 中写入 APPKEY,因为网站用户可能会看到它。
- 如果无法避免将 APPKEY 嵌入应用程序中,请对 APPKEY 进行混淆或加密。混淆或加密可以使从应用程序中提取 APPKEY 变得更加困难。
- 在 2025/06/30 MyPage 更新之前创建的账户的 APPKEY 以及发行的一次性 APPKEY 无法删除。要删除它们,需要退出会员后重新创建账户。
- 在 2025/06/30 MyPage 更新之后在 MyPage 上发行的 APPKEY 可以在 MyPage 上手动删除。使用一次性 APPKEY 发行 API 发行的 APPKEY 无法删除。
使用一次性 APPKEY
使用一次性 APPKEY 时,可以考虑以下实现方法:
- 通过某种方式对应用程序用户进行身份验证
- 身份验证成功后,在服务器端发行设置了有效期限的一次性 APPKEY 并发送给应用程序
- 应用程序使用一次性 APPKEY 来使用 AmiVoice API
以下说明如何使用一次性 APPKEY 发行 API。
请求
要使用一次性 APPKEY 发行 API,需要设置 Service ID (在请求正文中指定,参数名为 sid)和 Service Password (同样,spw),或者在 MyPage 上设置为"APPKEY 発行可能"并发行的 APPKEY(在 Authorization 标头中指定)。
请将 MyPage 中"Connection Information"中列出的[Service ID]和[Service Password]设置为 sid 和 spw。
服 务密码与用于登录 MyPage 的密码不同。
请以 application/x-www-form-urlencoded 格式在请求正文中设置 sid 和 spw。请不要使用查询参数(在 URL 末尾添加 ? 的方法)指定。
请求时的 HTTP 方法为 POST。
有效时间(请求参数名为 epi)可以任意设置。如果将数值设置为 epi,则以毫秒为单位。有关其他设置方法,请参阅参考。如果省略 epi,则默认值设置为 30000(30 秒)。请考虑从发行一次性 APPKEY 到实际发送 AmiVoice API 请求之间的预期时间来进行设置。可以在 ipa 中指定可以使用 APPKEY 的 IP 地址。
让我们使用 curl 命令来发行一次性 APPKEY。
示例1
仅限 IP 地址 203.0.113.253 的访问,并将有效期限设置为发行后 30 秒。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={serviceId} \
-d spw={service密码} \
-d epi=30000 \
-d ipa=203.0.113.253
如果使用 APPKEY 代替 sid 和 spw,则如下所示:
curl https://acp-api.amivoice.com/issue_service_authorization \
-d epi=30000 \
-d ipa=203.0.113.253 \
-H "Authorization: Bearer {可发行 APPKEY 的 APPKEY}"
示例 2
如果要按范围指定允许的 IP 地址,可以使用 CIDR 指定。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={serviceId} \
-d spw={service密码} \
-d epi=30000 \
-d ipa=203.0.113.0/24
示例3
IP 地址或其范围可以用逗号分隔多个指定。
curl https://acp-api.amivoice.com/issue_service_authorization \
-d sid={serviceId} \
-d spw={service密码} \
-d epi=30000 \
-d ipa=203.0.113.0/24,198.51.100.0/24