2016-10-19 22 views
3

の問題は、私が細かい実行されている電話番号とTwiMLアプリを取得し、flaskサーバーとngrok転送プロセスの両方を起動します。オペレーティングシステムとブラウザはChrome 53.0.2785.143 (64-bit) on Mac OSXです。 Twilio.Device Error: JWT signature validation failedのスクリーンショットに示すよう:twilio.jsブラウザソフトフォン - Twilioの公式<a href="https://www.twilio.com/docs/quickstart/client/javascript" rel="nofollow">tutorial code here</a>を使用してJWTの署名検証(マックOSX /クローム)

残念ながら、それはこのエラーを与えて、失敗した

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. 

デコードを暗号化するための秘密としてそれを使用していない可能性があります。

どのような考えですか?

+0

JWTをどのように生成していますか? – philnash

答えて

3

試してみるべきことがいくつかあります。

まず、実際のAccountSIDとAuthTokenを使用していることを確認し、DONTで「資格情報のテスト」を使用しようとします。トライアルアカウントであればすべてうまく動作しますが、twilioには音声通話の前に挨拶があります。

2番目:TwiMLアプリケーションを作成し、 "allowClientOutgoing"メソッドの間に "applicationId"に関連付けられたAppIDを使用していることを確認してください。

これは、JWT署名プロセスを実行する必要があります。サーバーが動作していないように見える場合。私はちょうどhereにあるGoogle Apps Scriptのバージョンを作った。単にコピーを作成してコード内の表記法に従って、資格情報とappIdを配置して、サーバーで何かを確認することができます。 単に使用するには、公開されたアプリのスクリプトURLにGETリクエストを行い、トークンを再試行します。

JWT署名が正しいことを確認するための追加手順。

発信のために、発信番号をダイヤルするための注文をTwiMLに戻すために、あなたのサーバーにコールバックが必要です。添付のGoogle Appsスクリプトには1つの設定もあります。あなたのregisterd twilio番号の音声コールバックsecionにスクリプトurlを追加し、それをPOST要求に設定します。

例TwiML発信

着信接続用
<Response><Dial callerId="+//enter your registered phonenumber here////">'+tocall+'</Dial></Response>' 

のために、あなたが「allowIncoming(クライアント名)」メソッドの際に使用するユーザーの名前をダイヤルする設定にいくつかのコードとTwiMLビンが必要になります。

例TwiML着信ため

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

は、コンソール内部登録PHONENUMBERの入射側TwiMLビンを割り当てます。

関連する問題