You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Authy TOTP因子迁移至Twilio Verify API?

将Authy TOTP密钥迁移到Twilio Verify API的详细步骤

前提确认

确保你从Authy提取的是Base32编码的原始TOTP种子,而非Authy的加密密钥或其他衍生格式——Twilio Verify API仅接受标准Base32格式的种子。


步骤1:准备Twilio凭证与服务信息

你需要提前获取以下信息:

  • Twilio Account SID
  • Twilio Auth Token
  • Verify服务SID(在Twilio控制台创建Verify服务后即可获取)

步骤2:调用Verify API创建TOTP因子

直接通过Twilio REST API创建关联已提取种子的TOTP因子,以下是不同开发工具的实现示例:

curl 示例

curl -X POST "https://verify.twilio.com/v2/Services/{YOUR_VERIFY_SERVICE_SID}/Factors" \
--data-urlencode "Type=totp" \
--data-urlencode "FriendlyName=Authy Migrated TOTP" \
--data-urlencode "Configuration[Secret]={YOUR_BASE32_SEED}" \
-u "{YOUR_ACCOUNT_SID}:{YOUR_AUTH_TOKEN}"

Python 示例(依赖twilio官方库)

from twilio.rest import Client

account_sid = "YOUR_ACCOUNT_SID"
auth_token = "YOUR_AUTH_TOKEN"
client = Client(account_sid, auth_token)

factor = client.verify.v2.services("YOUR_VERIFY_SERVICE_SID") \
    .factors \
    .create(
        type="totp",
        friendly_name="Authy Migrated TOTP",
        configuration={"secret": "YOUR_BASE32_SEED"}
    )

print(factor.sid)

参数说明

  • Type=totp:明确指定因子类型为TOTP
  • FriendlyName:自定义因子名称,用于区分不同设备或来源(比如“用户手机Authy迁移”)
  • Configuration[Secret]:填入从Authy提取的Base32原始种子,请勿添加空格、换行或其他多余字符

步骤3:验证迁移有效性

创建因子后,通过验证用户当前生成的TOTP码,确认迁移是否成功:

curl 验证示例

curl -X POST "https://verify.twilio.com/v2/Services/{YOUR_VERIFY_SERVICE_SID}/Factors/{YOUR_FACTOR_SID}/Challenge" \
--data-urlencode "Code={USER_CURRENT_TOTP_CODE}" \
-u "{YOUR_ACCOUNT_SID}:{YOUR_AUTH_TOKEN}"

若API返回status: approved,则说明迁移成功,该种子已可通过Twilio Verify进行正常验证。


关键注意事项

  • 若遇到invalid_secret错误,检查种子是否为标准Base32格式(仅包含A-Z、2-7字符,长度符合TOTP规范)
  • 迁移完成后,用户可继续使用原Authy应用生成的TOTP码,直到切换至新的验证工具
  • 请勿将Base32种子解码为二进制,Verify API会直接处理Base32编码值

内容的提问来源于stack exchange,提问作者Shivam Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 10:10:32