编程语言
首页 > 编程语言> > javascript-twilio.js浏览器软件电话-JWT签名验证问题(Mac OSX / Chrome)

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

作者:互联网

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

不幸的是,它失败,并给出以下错误:Twilio.Device错误:JWT签名验证失败,如屏幕快照所示:

running in browser

我尝试将{debug:true}提交给调用,如下所示:

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

并得到以下输出:

console logging JS error

但是仍然不清楚发生了什么.如果我尝试将返回的实际兼容性令牌扔到Python控制台中(使用JWT encoder/decoder),并尝试使用Twilio秘密身份验证令牌和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.

因此,也许他们没有将其用作编码解码的秘诀,所以不知道能证明多少.

有什么想法吗?

解决方法:

有几件事可以尝试.

第一:确保您使用的是实际的AccountSID和AuthToken,不要尝试使用“测试凭据”.如果您使用的是试用帐户,那么一切正常,twilio只会在语音呼叫之前打招呼.

第二:确保已创建TwiML应用程序,并且在“ allowClientOutgoing”方法期间将关联的AppID用于“ applicationId”.

那应该使您完成JWT签名过程.如果您的服务器似乎无法正常工作.我刚刚构建了一个Google Apps脚本版本here.只需按照代码中的符号进行复制即可放置您的凭据和appId,然后您就可以查看服务器中是否包含该内容.
若要使用,只需对已发布的应用程序脚本URL发出GET请求,它将重新调整令牌.

确保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分配给控制台内已注册电话号码的传入侧.

标签:twilio,jwt,twilio-api,javascript,python
来源: https://codeday.me/bug/20191118/2025184.html