gpt4 book ai didi

javascript - twilio.js 浏览器软件电话 - JWT 签名验证问题 (Mac OSX/Chrome)

转载 作者:太空狗 更新时间:2023-10-30 02:56:13 25 4
gpt4 key购买 nike

使用Twilio官方tutorial code here ,我得到一个电话号码和一个运行良好的 TwiML 应用程序,并启动 flask 服务器和 ngrok 转发进程。操作系统和浏览器是 Mac OSX 上的 Chrome 53.0.2785.143(64 位)

不幸的是,它失败了,给出了这个错误:Twilio.Device Error: JWT signature validation failed 如屏幕截图所示:

running in browser

我试过像这样将 {debug : true} 传递给调用:

Twilio.Device.setup(data.token, { debug: true }); 

得到如下输出:

console logging JS error

但目前还不清楚发生了什么。如果我尝试将返回到 Python 控制台的实际兼容性 token (使用 JWT encoder/decoder )并尝试使用 Twilio secret 身份验证 token 和 HS256 algorithm 对其进行解码:

from jose import jwt 
token = "xxxxx" # compatibility token from above in browser
print jwt.decode(token, TWILIO_AUTH_TOKEN, algorithms=['HS256'])

我收到以下错误:

/Users/me/.virtualenvs/myenv/lib/python2.7/site-packages/jose/jwt.pyc in decode(token, key, algorithms, options, audience, issuer, subject, access_token)
132 payload = jws.verify(token, key, algorithms, verify=verify_signature)
133 except JWSError as e:
--> 134 raise JWTError(e)
135
136 # Needed for at_hash verification

JWTError: Signature verification failed.

所以也许他们没有使用它作为编码解码的 secret ,所以不确定这能证明多少。

有什么想法吗?

最佳答案

有几件事可以尝试。

首先:确保您使用的是实际的 AccountSID 和 AuthToken,不要尝试使用“测试凭据”。如果您使用的是试用帐户,则一切正常,twilio 仅在语音调用前添加了问候语。

其次:确保您已经创建了一个 TwiML 应用程序,并在“allowClientOutgoing”方法期间将关联的 AppID 用于“applicationId”。

这应该可以帮助您完成 JWT 签名过程。如果您的服务器似乎无法正常工作。我刚刚构建了一个位于 here 的 Google Apps 脚本版本.只需按照代码中的符号制作副本以放置您的凭据和 appId,然后您就可以查看它是否与您的服务器有关。要使用,只需向已发布的应用程序脚本 URL 发出 GET 请求,它就会重新调整 token 。

确保 JWT 签名正确后的其他步骤。

对于传出,您将需要回调到您的服务器以发送一些带有命令的 TwiML 来调用传出号码。附加的 Google Apps 脚本中也有一个设置。将脚本 url 添加到您注册的 twilio 号码上的语音回调部分,并将其设置为 POST 请求。

传出的 TwiML 示例

<Response><Dial callerId="+//enter your registered phonenumber here////">'+tocall+'</Dial></Response>'

对于传入连接,您需要使用一些代码设置 TwiML Bin,以调用您在“allowIncoming(clientName)”方法中使用的用户名。

传入的 TwiML 示例

<?xml version="1.0" encoding="UTF-8"?>
<Response>
<Dial>
<Client>//client name or id registered during token generation here\\</Client>
</Dial>
</Response>

然后将 TwiML Bin 分配到控制台内已注册电话号码的传入端。

关于javascript - twilio.js 浏览器软件电话 - JWT 签名验证问题 (Mac OSX/Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40138459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com