Сбой при разборе токена JWT [31204], как это исправить? - PullRequest
0 голосов
/ 28 марта 2019

Когда я выполняю Twilio.Device(token), я получаю сообщение об ошибке: {code: 31204, message: "JWT token parsing failed"}.

Этот сервис (https://jwt.io/#debugger-io) способен декодировать эти токены, но мой js-клиент этого не делает. Кроме того, я знаю, что эти токены можно анализировать с помощью SDK для iOS и Android, поэтому я заинтересован что не так с моим js-приложением?

Я могу поделиться результатами разбора # debugger-io:

[header]{
  "alg": "HS256",
  "cty": "twilio-fpa;v=1",
  "typ": "JWT"
}

[payload]{
  "exp": 1553784490,
  "grants": {
    "identity": "24e7e8b3-bb57-5c6e-8f38-9964e6d4edf7",
    "video": {
      "room": "d45373f6-5c78-5d8f-997f-c6f070be940d"
    }
  },
  "iat": 1553780890,
  "iss": "// some string here",
  "jti": "// some string here",
  "sub": "// some string here"
}

Я уже пытался запустить Twilio.Device из токена, который получал из quick-start-app, и он отлично работает. Кроме того, я использовал приложение быстрого запуска с моим токеном, и эта ошибка также была нарушена.

Код ниже показывает способ получения токена на клиенте:

class CallService{
   constructor(private authService: AuthService, private requestService: RequestService){}

   public getCallToken$(callId: string): Observable<{token: string}>{
    return this.requestService.post('here is our service-url',{
        roomName: callId,
        userName: this.authService.user.uuid
      }
    ).pipe(catchError((err: HttpErrorResponse) => {
      console.warn(err);
      alert(`Can't use calls with those parameters: { roomName: ${callId}, userName: ${this.authService.user.uuid} }`);
      return confirm('Try it again?') ? this.getCallToken$(callId) : throwError(err)
    }))
  }

   public createDevice(token: string): Twilio.Device{
      console.log(token);
      return new Twilio.Device(token, {debug: true})
   }
}


// this code with injected CallService
this.callService.getCallToken$('//random-id').subscribe(
   {token} => {
      const device = this.callService.createDevice(token);
      device.on('error', err => console.warn(err));
      device.on('ready', d => { // ... })
      // ... other manipulations 
   }
)

Я спросил своих бэкэнд-разработчиков, преобразуют ли они токены из twilio-api, и они сказали «нет».

...